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
' .
+ ' *
' .
+ 'FROM
' .
+ ' tbl
' .
+ 'WHERE
' .
+ ' 1 ' .
+ '',
+ ],
+ '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 ',
+ ],
+ '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;', $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);?>
@@ -62,7 +63,7 @@
| admin->safe->changeWeak?> |
- admin->safe->modifyPasswordList, isset($config->safe->changeWeak) ? $config->safe->changeWeak : 0)?> |
+ admin->safe->modifyPasswordList, isset($config->safe->changeWeak) ? $config->safe->changeWeak : 0, "onchange='changeWeakChange(this.value)'")?> |
| admin->safe->modifyPasswordFirstLogin?> |
diff --git a/module/bug/config.php b/module/bug/config.php
index c0dd78d8ef..0ba621fbc7 100644
--- a/module/bug/config.php
+++ b/module/bug/config.php
@@ -133,35 +133,28 @@ $config->bug->search['params']['branch'] = array('operator' => '=',
$config->bug->search['params']['plan'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->bug->search['params']['module'] = array('operator' => 'belong', 'control' => 'select', 'values' => 'modules');
$config->bug->search['params']['execution'] = array('operator' => '=', 'control' => 'select', 'values' => 'executions');
-
$config->bug->search['params']['severity'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->severityList);
$config->bug->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->priList);
$config->bug->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->typeList);
-$config->bug->search['params']['os'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->osList);
-$config->bug->search['params']['browser'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->browserList);
+$config->bug->search['params']['os'] = array('operator' => 'include', 'control' => 'select', 'values' => $lang->bug->osList);
+$config->bug->search['params']['browser'] = array('operator' => 'include', 'control' => 'select', 'values' => $lang->bug->browserList);
$config->bug->search['params']['resolution'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->resolutionList);
-
$config->bug->search['params']['activatedCount']= array('operator' => '>=', 'control' => 'input', 'values' => '');
-
$config->bug->search['params']['toTask'] = array('operator' => '=', 'control' => 'input', 'values' => '');
$config->bug->search['params']['toStory'] = array('operator' => '=', 'control' => 'input', 'values' => '');
-
$config->bug->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->bug->search['params']['closedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->bug->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
-
-$config->bug->search['params']['mailto'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
-
+$config->bug->search['params']['mailto'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
$config->bug->search['params']['openedBuild'] = array('operator' => 'include', 'control' => 'select', 'values' => 'builds');
$config->bug->search['params']['resolvedBuild'] = array('operator' => '=', 'control' => 'select', 'values' => 'builds');
-
-$config->bug->search['params']['openedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
-$config->bug->search['params']['assignedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
-$config->bug->search['params']['resolvedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
-$config->bug->search['params']['closedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
-$config->bug->search['params']['lastEditedDate']= array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
-$config->bug->search['params']['deadline'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
-$config->bug->search['params']['activatedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->bug->search['params']['openedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->bug->search['params']['assignedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->bug->search['params']['resolvedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->bug->search['params']['closedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->bug->search['params']['lastEditedDate']= array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->bug->search['params']['deadline'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
+$config->bug->search['params']['activatedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->bug->datatable = new stdclass();
$config->bug->datatable->defaultField = array('id', 'severity', 'pri', 'confirmed', 'title', 'status', 'openedBy', 'openedDate', 'assignedTo', 'resolution', 'actions');
diff --git a/module/bug/control.php b/module/bug/control.php
index 7dcae1aa83..bb3f353043 100755
--- a/module/bug/control.php
+++ b/module/bug/control.php
@@ -859,6 +859,7 @@ class bug extends control
$this->view->moduleID = $moduleID;
$this->view->branch = $branch;
$this->view->branches = $branches;
+
$this->display();
}
@@ -1132,6 +1133,8 @@ class bug extends control
$moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $bug->branch);
if(!isset($moduleOptionMenu[$bug->module])) $moduleOptionMenu += $this->tree->getModulesName($bug->module);
+ $cases = $this->loadmodel('testcase')->getPairsByProduct($bug->product, array(0, $bug->branch));
+
/* Get assigned to member. */
if($bug->execution)
{
@@ -1165,6 +1168,7 @@ class bug extends control
$this->view->testtasks = $this->loadModel('testtask')->getPairs($bug->product, $bug->execution, $bug->testtask);
$this->view->users = $this->user->getPairs('', "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy,$bug->openedBy");
$this->view->assignedToList = $assignedToList;
+ $this->view->cases = array('' => '') + $cases;
$this->view->openedBuilds = $openedBuilds;
$this->view->resolvedBuilds = array('' => '') + $openedBuilds + $oldResolvedBuild;
$this->view->actions = $this->action->getList('bug', $bugID);
@@ -1379,8 +1383,6 @@ class bug extends control
$this->view->priList = array('0' => '', 'ditto' => $this->lang->bug->ditto) + $this->lang->bug->priList;
$this->view->resolutionList = array('' => '', 'ditto' => $this->lang->bug->ditto) + $this->lang->bug->resolutionList;
$this->view->statusList = array('' => '', 'ditto' => $this->lang->bug->ditto) + $this->lang->bug->statusList;
- $this->view->osList = array('' => '', 'ditto' => $this->lang->bug->ditto) + $this->lang->bug->osList;
- $this->view->browserList = array('' => '', 'ditto' => $this->lang->bug->ditto) + $this->lang->bug->browserList;
$this->view->bugs = $bugs;
$this->view->branch = $branch;
$this->view->users = $users;
diff --git a/module/bug/css/create.css b/module/bug/css/create.css
index 470dd51d77..557bf69e84 100644
--- a/module/bug/css/create.css
+++ b/module/bug/css/create.css
@@ -55,3 +55,4 @@ html[lang='de'] #keywordsAddonLabel, .task {width: 73px;}
#executionLabel {display: inline; position: relative; width: 50%; left: 37%;}
#projectLabel {display: inline;}
#openedBuildLabel {display: inline; position: relative; width: 50%; left: 14%;}
+#bugTypeInputGroup > .table-col {width: 40% !important;}
diff --git a/module/bug/css/view.css b/module/bug/css/view.css
index 452146b88a..00eb876f92 100644
--- a/module/bug/css/view.css
+++ b/module/bug/css/view.css
@@ -5,3 +5,5 @@
.tab-pane table {border: 1px solid #ddd; border-top: none;}
.btn-edit-comment {z-index: 100;}
.select-project-modal .modal-body {right: 15px;}
+.osContent, .browserContent {margin: 0 0 5px;}
+.browserContent {margin-left: -4px;}
diff --git a/module/bug/js/browse.js b/module/bug/js/browse.js
index 6d469700d9..0cc3ce246d 100644
--- a/module/bug/js/browse.js
+++ b/module/bug/js/browse.js
@@ -8,4 +8,27 @@ $(function()
$("#sidebarHeader").toggle("fast");
});
if($("main").is(".hide-sidebar")) $("#sidebarHeader").hide();
+
+ $('#bugList').on('change', "[name='bugIDList[]']", checkClosed);
});
+
+/**
+ * Closed bugs are not assignable.
+ *
+ * @access public
+ * @return void
+ */
+function checkClosed()
+{
+ var disabledAssigned = $('#bugList tr.checked .c-assignedTo a').length > 0 ? true : false;
+ $('#bugList tr.checked .c-assignedTo a').each(function()
+ {
+ if(!$(this).hasClass('disabled'))
+ {
+ disabledAssigned = false;
+ return false;
+ }
+ });
+
+ $('#mulAssigned').prop('disabled', disabledAssigned);
+}
diff --git a/module/bug/lang/de.php b/module/bug/lang/de.php
index c9e6875e7b..4a4999204f 100644
--- a/module/bug/lang/de.php
+++ b/module/bug/lang/de.php
@@ -232,51 +232,39 @@ $lang->bug->priList[2] = '2';
$lang->bug->priList[3] = '3';
$lang->bug->priList[4] = '4';
-$lang->bug->osList[''] = '';
-$lang->bug->osList['all'] = 'Alle';
-$lang->bug->osList['windows'] = 'Windows';
-$lang->bug->osList['win10'] = 'Windows 10';
-$lang->bug->osList['win8'] = 'Windows 8';
-$lang->bug->osList['win7'] = 'Windows 7';
-$lang->bug->osList['vista'] = 'Windows Vista';
-$lang->bug->osList['winxp'] = 'Windows XP';
-$lang->bug->osList['win2012'] = 'Windows 2012';
-$lang->bug->osList['win2008'] = 'Windows 2008';
-$lang->bug->osList['win2003'] = 'Windows 2003';
-$lang->bug->osList['win2000'] = 'Windows 2000';
-$lang->bug->osList['android'] = 'Android';
-$lang->bug->osList['ios'] = 'IOS';
-$lang->bug->osList['wp8'] = 'WP8';
-$lang->bug->osList['wp7'] = 'WP7';
-$lang->bug->osList['symbian'] = 'Symbian';
-$lang->bug->osList['linux'] = 'Linux';
-$lang->bug->osList['freebsd'] = 'FreeBSD';
-$lang->bug->osList['osx'] = 'OS X';
-$lang->bug->osList['unix'] = 'Unix';
-$lang->bug->osList['others'] = 'Andere';
+$lang->bug->osList[''] = '';
+$lang->bug->osList['all'] = 'Alle';
+$lang->bug->osList['windows'] = 'Windows';
+$lang->bug->osList['win11'] = 'Windows 11';
+$lang->bug->osList['win10'] = 'Windows 10';
+$lang->bug->osList['win8'] = 'Windows 8';
+$lang->bug->osList['win7'] = 'Windows 7';
+$lang->bug->osList['winxp'] = 'Windows XP';
+$lang->bug->osList['osx'] = 'Mac OS';
+$lang->bug->osList['android'] = 'Android';
+$lang->bug->osList['ios'] = 'IOS';
+$lang->bug->osList['linux'] = 'Linux';
+$lang->bug->osList['ubuntu'] = 'Ubuntu';
+$lang->bug->osList['chromeos'] = 'Chrome OS';
+$lang->bug->osList['fedora'] = 'Fedora';
+$lang->bug->osList['unix'] = 'Unix';
+$lang->bug->osList['others'] = 'Andere';
-$lang->bug->browserList[''] = '';
-$lang->bug->browserList['all'] = 'Alle';
-$lang->bug->browserList['ie'] = 'IE series';
-$lang->bug->browserList['ie11'] = 'IE11';
-$lang->bug->browserList['ie10'] = 'IE10';
-$lang->bug->browserList['ie9'] = 'IE9';
-$lang->bug->browserList['ie8'] = 'IE8';
-$lang->bug->browserList['ie7'] = 'IE7';
-$lang->bug->browserList['ie6'] = 'IE6';
-$lang->bug->browserList['chrome'] = 'chrome';
-$lang->bug->browserList['firefox'] = 'Firefox series';
-$lang->bug->browserList['firefox4'] = 'Firefox4';
-$lang->bug->browserList['firefox3'] = 'Firefox3';
-$lang->bug->browserList['firefox2'] = 'Firefox2';
-$lang->bug->browserList['opera'] = 'Opera series';
-$lang->bug->browserList['oprea11'] = 'Opera11';
-$lang->bug->browserList['oprea10'] = 'Opera10';
-$lang->bug->browserList['opera9'] = 'Opera9';
-$lang->bug->browserList['safari'] = 'Safari';
-$lang->bug->browserList['maxthon'] = 'Maxthon';
-$lang->bug->browserList['uc'] = 'UC';
-$lang->bug->browserList['other'] = 'Andere';
+$lang->bug->browserList[''] = '';
+$lang->bug->browserList['all'] = 'Alle';
+$lang->bug->browserList['chrome'] = 'Chrome';
+$lang->bug->browserList['edge'] = 'Edge';
+$lang->bug->browserList['ie'] = 'IE series';
+$lang->bug->browserList['ie11'] = 'IE11';
+$lang->bug->browserList['ie10'] = 'IE10';
+$lang->bug->browserList['ie9'] = 'IE9';
+$lang->bug->browserList['ie8'] = 'IE8';
+$lang->bug->browserList['firefox'] = 'Firefox series';
+$lang->bug->browserList['opera'] = 'Opera series';
+$lang->bug->browserList['safari'] = 'Safari';
+$lang->bug->browserList['360'] = '360 series';
+$lang->bug->browserList['qq'] = 'QQ series';
+$lang->bug->browserList['other'] = 'Andere';
$lang->bug->typeList[''] = '';
$lang->bug->typeList['codeerror'] = 'Code Fehler';
@@ -428,7 +416,6 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
-
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php
index fc62a14d4f..9a67e54d8c 100644
--- a/module/bug/lang/en.php
+++ b/module/bug/lang/en.php
@@ -232,51 +232,39 @@ $lang->bug->priList[2] = '2';
$lang->bug->priList[3] = '3';
$lang->bug->priList[4] = '4';
-$lang->bug->osList[''] = '';
-$lang->bug->osList['all'] = 'All';
-$lang->bug->osList['windows'] = 'Windows';
-$lang->bug->osList['win10'] = 'Windows 10';
-$lang->bug->osList['win8'] = 'Windows 8';
-$lang->bug->osList['win7'] = 'Windows 7';
-$lang->bug->osList['vista'] = 'Windows Vista';
-$lang->bug->osList['winxp'] = 'Windows XP';
-$lang->bug->osList['win2012'] = 'Windows 2012';
-$lang->bug->osList['win2008'] = 'Windows 2008';
-$lang->bug->osList['win2003'] = 'Windows 2003';
-$lang->bug->osList['win2000'] = 'Windows 2000';
-$lang->bug->osList['android'] = 'Android';
-$lang->bug->osList['ios'] = 'IOS';
-$lang->bug->osList['wp8'] = 'WP8';
-$lang->bug->osList['wp7'] = 'WP7';
-$lang->bug->osList['symbian'] = 'Symbian';
-$lang->bug->osList['linux'] = 'Linux';
-$lang->bug->osList['freebsd'] = 'FreeBSD';
-$lang->bug->osList['osx'] = 'OS X';
-$lang->bug->osList['unix'] = 'Unix';
-$lang->bug->osList['others'] = 'Others';
+$lang->bug->osList[''] = '';
+$lang->bug->osList['all'] = 'All';
+$lang->bug->osList['windows'] = 'Windows';
+$lang->bug->osList['win11'] = 'Windows 11';
+$lang->bug->osList['win10'] = 'Windows 10';
+$lang->bug->osList['win8'] = 'Windows 8';
+$lang->bug->osList['win7'] = 'Windows 7';
+$lang->bug->osList['winxp'] = 'Windows XP';
+$lang->bug->osList['osx'] = 'Mac OS';
+$lang->bug->osList['android'] = 'Android';
+$lang->bug->osList['ios'] = 'IOS';
+$lang->bug->osList['linux'] = 'Linux';
+$lang->bug->osList['ubuntu'] = 'Ubuntu';
+$lang->bug->osList['chromeos'] = 'Chrome OS';
+$lang->bug->osList['fedora'] = 'Fedora';
+$lang->bug->osList['unix'] = 'Unix';
+$lang->bug->osList['others'] = 'Others';
-$lang->bug->browserList[''] = '';
-$lang->bug->browserList['all'] = 'All';
-$lang->bug->browserList['ie'] = 'IE series';
-$lang->bug->browserList['ie11'] = 'IE11';
-$lang->bug->browserList['ie10'] = 'IE10';
-$lang->bug->browserList['ie9'] = 'IE9';
-$lang->bug->browserList['ie8'] = 'IE8';
-$lang->bug->browserList['ie7'] = 'IE7';
-$lang->bug->browserList['ie6'] = 'IE6';
-$lang->bug->browserList['chrome'] = 'Chrome';
-$lang->bug->browserList['firefox'] = 'Firefox series';
-$lang->bug->browserList['firefox4'] = 'Firefox4';
-$lang->bug->browserList['firefox3'] = 'Firefox3';
-$lang->bug->browserList['firefox2'] = 'Firefox2';
-$lang->bug->browserList['opera'] = 'Opera series';
-$lang->bug->browserList['oprea11'] = 'Opera11';
-$lang->bug->browserList['oprea10'] = 'Opera10';
-$lang->bug->browserList['opera9'] = 'Opera9';
-$lang->bug->browserList['safari'] = 'Safari';
-$lang->bug->browserList['maxthon'] = 'Maxthon';
-$lang->bug->browserList['uc'] = 'UC';
-$lang->bug->browserList['other'] = 'Others';
+$lang->bug->browserList[''] = '';
+$lang->bug->browserList['all'] = 'All';
+$lang->bug->browserList['chrome'] = 'Chrome';
+$lang->bug->browserList['edge'] = 'Edge';
+$lang->bug->browserList['ie'] = 'IE series';
+$lang->bug->browserList['ie11'] = 'IE11';
+$lang->bug->browserList['ie10'] = 'IE10';
+$lang->bug->browserList['ie9'] = 'IE9';
+$lang->bug->browserList['ie8'] = 'IE8';
+$lang->bug->browserList['firefox'] = 'Firefox series';
+$lang->bug->browserList['opera'] = 'Opera series';
+$lang->bug->browserList['safari'] = 'Safari';
+$lang->bug->browserList['360'] = '360 series';
+$lang->bug->browserList['qq'] = 'QQ series';
+$lang->bug->browserList['other'] = 'Others';
$lang->bug->typeList[''] = '';
$lang->bug->typeList['codeerror'] = 'CodeError';
@@ -428,7 +416,6 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
-
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
diff --git a/module/bug/lang/fr.php b/module/bug/lang/fr.php
index ff95166866..6ea57d780c 100644
--- a/module/bug/lang/fr.php
+++ b/module/bug/lang/fr.php
@@ -232,51 +232,39 @@ $lang->bug->priList[2] = '2';
$lang->bug->priList[3] = '3';
$lang->bug->priList[4] = '4';
-$lang->bug->osList[''] = '';
-$lang->bug->osList['all'] = 'Tous';
-$lang->bug->osList['windows'] = 'Windows';
-$lang->bug->osList['win10'] = 'Windows 10';
-$lang->bug->osList['win8'] = 'Windows 8';
-$lang->bug->osList['win7'] = 'Windows 7';
-$lang->bug->osList['vista'] = 'Windows Vista';
-$lang->bug->osList['winxp'] = 'Windows XP';
-$lang->bug->osList['win2012'] = 'Windows 2012';
-$lang->bug->osList['win2008'] = 'Windows 2008';
-$lang->bug->osList['win2003'] = 'Windows 2003';
-$lang->bug->osList['win2000'] = 'Windows 2000';
-$lang->bug->osList['android'] = 'Android';
-$lang->bug->osList['ios'] = 'IOS';
-$lang->bug->osList['wp8'] = 'WP8';
-$lang->bug->osList['wp7'] = 'WP7';
-$lang->bug->osList['symbian'] = 'Symbian';
-$lang->bug->osList['linux'] = 'Linux';
-$lang->bug->osList['freebsd'] = 'FreeBSD';
-$lang->bug->osList['osx'] = 'OS X';
-$lang->bug->osList['unix'] = 'Unix';
-$lang->bug->osList['others'] = 'Autres';
+$lang->bug->osList[''] = '';
+$lang->bug->osList['all'] = 'Tous';
+$lang->bug->osList['windows'] = 'Windows';
+$lang->bug->osList['win11'] = 'Windows 11';
+$lang->bug->osList['win10'] = 'Windows 10';
+$lang->bug->osList['win8'] = 'Windows 8';
+$lang->bug->osList['win7'] = 'Windows 7';
+$lang->bug->osList['winxp'] = 'Windows XP';
+$lang->bug->osList['osx'] = 'Mac OS';
+$lang->bug->osList['android'] = 'Android';
+$lang->bug->osList['ios'] = 'IOS';
+$lang->bug->osList['linux'] = 'Linux';
+$lang->bug->osList['ubuntu'] = 'Ubuntu';
+$lang->bug->osList['chromeos'] = 'Chrome OS';
+$lang->bug->osList['fedora'] = 'Fedora';
+$lang->bug->osList['unix'] = 'Unix';
+$lang->bug->osList['others'] = 'Autres';
-$lang->bug->browserList[''] = '';
-$lang->bug->browserList['all'] = 'Tous';
-$lang->bug->browserList['ie'] = 'IE series';
-$lang->bug->browserList['ie11'] = 'IE11';
-$lang->bug->browserList['ie10'] = 'IE10';
-$lang->bug->browserList['ie9'] = 'IE9';
-$lang->bug->browserList['ie8'] = 'IE8';
-$lang->bug->browserList['ie7'] = 'IE7';
-$lang->bug->browserList['ie6'] = 'IE6';
-$lang->bug->browserList['chrome'] = 'Chrome';
-$lang->bug->browserList['firefox'] = 'Firefox series';
-$lang->bug->browserList['firefox4'] = 'Firefox4';
-$lang->bug->browserList['firefox3'] = 'Firefox3';
-$lang->bug->browserList['firefox2'] = 'Firefox2';
-$lang->bug->browserList['opera'] = 'Opera series';
-$lang->bug->browserList['oprea11'] = 'Opera11';
-$lang->bug->browserList['oprea10'] = 'Opera10';
-$lang->bug->browserList['opera9'] = 'Opera9';
-$lang->bug->browserList['safari'] = 'Safari';
-$lang->bug->browserList['maxthon'] = 'Maxthon';
-$lang->bug->browserList['uc'] = 'UC';
-$lang->bug->browserList['other'] = 'Autres';
+$lang->bug->browserList[''] = '';
+$lang->bug->browserList['all'] = 'Tous';
+$lang->bug->browserList['chrome'] = 'Chrome';
+$lang->bug->browserList['edge'] = 'Edge';
+$lang->bug->browserList['ie'] = 'IE series';
+$lang->bug->browserList['ie11'] = 'IE11';
+$lang->bug->browserList['ie10'] = 'IE10';
+$lang->bug->browserList['ie9'] = 'IE9';
+$lang->bug->browserList['ie8'] = 'IE8';
+$lang->bug->browserList['firefox'] = 'Firefox series';
+$lang->bug->browserList['opera'] = 'Opera series';
+$lang->bug->browserList['safari'] = 'Safari';
+$lang->bug->browserList['360'] = '360 series';
+$lang->bug->browserList['qq'] = 'QQ series';
+$lang->bug->browserList['other'] = 'Autres';
$lang->bug->typeList[''] = '';
$lang->bug->typeList['codeerror'] = 'Code Erreur';
@@ -428,7 +416,6 @@ $lang->bug->featureBar['browse']['unclosed'] = $lang->bug->unclosed;
$lang->bug->featureBar['browse']['openedbyme'] = $lang->bug->openedByMe;
$lang->bug->featureBar['browse']['assigntome'] = $lang->bug->assignToMe;
$lang->bug->featureBar['browse']['resolvedbyme'] = $lang->bug->resolvedByMe;
-
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
diff --git a/module/bug/lang/zh-cn.php b/module/bug/lang/zh-cn.php
index 73c41b12e0..e4ea8310b7 100644
--- a/module/bug/lang/zh-cn.php
+++ b/module/bug/lang/zh-cn.php
@@ -232,51 +232,39 @@ $lang->bug->priList[2] = '2';
$lang->bug->priList[3] = '3';
$lang->bug->priList[4] = '4';
-$lang->bug->osList[''] = '';
-$lang->bug->osList['all'] = '全部';
-$lang->bug->osList['windows'] = 'Windows';
-$lang->bug->osList['win10'] = 'Windows 10';
-$lang->bug->osList['win8'] = 'Windows 8';
-$lang->bug->osList['win7'] = 'Windows 7';
-$lang->bug->osList['vista'] = 'Windows Vista';
-$lang->bug->osList['winxp'] = 'Windows XP';
-$lang->bug->osList['win2012'] = 'Windows 2012';
-$lang->bug->osList['win2008'] = 'Windows 2008';
-$lang->bug->osList['win2003'] = 'Windows 2003';
-$lang->bug->osList['win2000'] = 'Windows 2000';
-$lang->bug->osList['android'] = 'Android';
-$lang->bug->osList['ios'] = 'IOS';
-$lang->bug->osList['wp8'] = 'WP8';
-$lang->bug->osList['wp7'] = 'WP7';
-$lang->bug->osList['symbian'] = 'Symbian';
-$lang->bug->osList['linux'] = 'Linux';
-$lang->bug->osList['freebsd'] = 'FreeBSD';
-$lang->bug->osList['osx'] = 'OS X';
-$lang->bug->osList['unix'] = 'Unix';
-$lang->bug->osList['others'] = '其他';
+$lang->bug->osList[''] = '';
+$lang->bug->osList['all'] = '全部';
+$lang->bug->osList['windows'] = 'Windows';
+$lang->bug->osList['win11'] = 'Windows 11';
+$lang->bug->osList['win10'] = 'Windows 10';
+$lang->bug->osList['win8'] = 'Windows 8';
+$lang->bug->osList['win7'] = 'Windows 7';
+$lang->bug->osList['winxp'] = 'Windows XP';
+$lang->bug->osList['osx'] = 'Mac OS';
+$lang->bug->osList['android'] = 'Android';
+$lang->bug->osList['ios'] = 'IOS';
+$lang->bug->osList['linux'] = 'Linux';
+$lang->bug->osList['ubuntu'] = 'Ubuntu';
+$lang->bug->osList['chromeos'] = 'Chrome OS';
+$lang->bug->osList['fedora'] = 'Fedora';
+$lang->bug->osList['unix'] = 'Unix';
+$lang->bug->osList['others'] = '其他';
-$lang->bug->browserList[''] = '';
-$lang->bug->browserList['all'] = '全部';
-$lang->bug->browserList['ie'] = 'IE系列';
-$lang->bug->browserList['ie11'] = 'IE11';
-$lang->bug->browserList['ie10'] = 'IE10';
-$lang->bug->browserList['ie9'] = 'IE9';
-$lang->bug->browserList['ie8'] = 'IE8';
-$lang->bug->browserList['ie7'] = 'IE7';
-$lang->bug->browserList['ie6'] = 'IE6';
-$lang->bug->browserList['chrome'] = 'chrome';
-$lang->bug->browserList['firefox'] = 'firefox系列';
-$lang->bug->browserList['firefox4'] = 'firefox4';
-$lang->bug->browserList['firefox3'] = 'firefox3';
-$lang->bug->browserList['firefox2'] = 'firefox2';
-$lang->bug->browserList['opera'] = 'opera系列';
-$lang->bug->browserList['oprea11'] = 'opera11';
-$lang->bug->browserList['oprea10'] = 'opera10';
-$lang->bug->browserList['opera9'] = 'opera9';
-$lang->bug->browserList['safari'] = 'safari';
-$lang->bug->browserList['maxthon'] = '傲游';
-$lang->bug->browserList['uc'] = 'UC';
-$lang->bug->browserList['other'] = '其他';
+$lang->bug->browserList[''] = '';
+$lang->bug->browserList['all'] = '全部';
+$lang->bug->browserList['chrome'] = 'Chrome';
+$lang->bug->browserList['edge'] = 'Edge';
+$lang->bug->browserList['ie'] = 'IE系列';
+$lang->bug->browserList['ie11'] = 'IE11';
+$lang->bug->browserList['ie10'] = 'IE10';
+$lang->bug->browserList['ie9'] = 'IE9';
+$lang->bug->browserList['ie8'] = 'IE8';
+$lang->bug->browserList['firefox'] = 'firefox系列';
+$lang->bug->browserList['opera'] = 'Opera系列';
+$lang->bug->browserList['safari'] = 'safari';
+$lang->bug->browserList['360'] = '360浏览器';
+$lang->bug->browserList['qq'] = 'QQ浏览器';
+$lang->bug->browserList['other'] = '其他';
$lang->bug->typeList[''] = '';
$lang->bug->typeList['codeerror'] = '代码错误';
@@ -432,7 +420,6 @@ $lang->bug->featureBar['browse']['assignedbyme'] = $lang->bug->assignedByMe;
$lang->bug->featureBar['browse']['unresolved'] = $lang->bug->unResolved;
$lang->bug->featureBar['browse']['more'] = $lang->more;
-
$lang->bug->moreSelects['unconfirmed'] = $lang->bug->unconfirmed;
$lang->bug->moreSelects['assigntonull'] = $lang->bug->assignToNull;
$lang->bug->moreSelects['longlifebugs'] = $lang->bug->longLifeBugs;
diff --git a/module/bug/model.php b/module/bug/model.php
index 34c06d1800..803fba1cf8 100644
--- a/module/bug/model.php
+++ b/module/bug/model.php
@@ -76,6 +76,8 @@ class bugModel extends model
->trim('title')
->join('openedBuild', ',')
->join('mailto', ',')
+ ->join('os', ',')
+ ->join('browser', ',')
->remove('files,labels,uid,oldTaskID,contactListMenu,region,lane')
->get();
@@ -163,25 +165,24 @@ class bugModel extends model
$execution = 0;
$type = '';
$pri = 0;
- $os = '';
- $browser = '';
foreach($data->title as $i => $title)
{
+ $oses = array_filter($data->oses[$i]);
+ $browsers = array_filter($data->browsers[$i]);
+
if($data->modules[$i] != 'ditto') $module = (int)$data->modules[$i];
if($data->projects[$i] != 'ditto') $project = (int)$data->projects[$i];
if($data->executions[$i] != 'ditto') $execution = (int)$data->executions[$i];
if($data->types[$i] != 'ditto') $type = $data->types[$i];
if($data->pris[$i] != 'ditto') $pri = $data->pris[$i];
- if($data->oses[$i] != 'ditto') $os = $data->oses[$i];
- if($data->browsers[$i] != 'ditto') $browser = $data->browsers[$i];
$data->modules[$i] = (int)$module;
$data->projects[$i] = (int)$project;
$data->executions[$i] = (int)$execution;
$data->types[$i] = $type;
$data->pris[$i] = $pri;
- $data->oses[$i] = $os;
- $data->browsers[$i] = $browser;
+ $data->oses[$i] = implode(',', $oses);
+ $data->browsers[$i] = implode(',', $browsers);
}
/* Get bug data. */
@@ -689,6 +690,8 @@ class bugModel extends model
->stripTags($this->config->bug->editor->edit['id'], $this->config->allowedTags)
->setDefault('product,module,execution,story,task,duplicateBug,branch', 0)
->setDefault('openedBuild', '')
+ ->setDefault('os', '')
+ ->setDefault('browser', '')
->setDefault('plan', 0)
->setDefault('deadline', '0000-00-00')
->setDefault('resolvedDate', '0000-00-00 00:00:00')
@@ -699,6 +702,8 @@ class bugModel extends model
->join('openedBuild', ',')
->join('mailto', ',')
->join('linkBug', ',')
+ ->join('os', ',')
+ ->join('browser', ',')
->setIF($this->post->assignedTo != $oldBug->assignedTo, 'assignedDate', $now)
->setIF($this->post->resolvedBy != '' and $this->post->resolvedDate == '', 'resolvedDate', $now)
->setIF($this->post->resolution != '' and $this->post->resolvedDate == '', 'resolvedDate', $now)
@@ -716,6 +721,7 @@ class bugModel extends model
->setIF($this->post->resolution != '', 'confirmed', 1)
->setIF($this->post->story != false and $this->post->story != $oldBug->story, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story))
->setIF(!$this->post->linkBug, 'linkBug', '')
+ ->setIF($this->post->case === '', 'case', 0)
->remove('comment,files,labels,uid,contactListMenu')
->get();
@@ -805,8 +811,6 @@ class bugModel extends model
if($data->assignedTos[$bugID] == 'ditto') $data->assignedTos[$bugID] = isset($prev['assignedTo']) ? $prev['assignedTo'] : '';
if($data->resolvedBys[$bugID] == 'ditto') $data->resolvedBys[$bugID] = isset($prev['resolvedBy']) ? $prev['resolvedBy'] : '';
if($data->resolutions[$bugID] == 'ditto') $data->resolutions[$bugID] = isset($prev['resolution']) ? $prev['resolution'] : '';
- if($data->os[$bugID] == 'ditto') $data->os[$bugID] = isset($prev['os']) ? $prev['os'] : '';
- if($data->browsers[$bugID] == 'ditto') $data->browsers[$bugID] = isset($prev['browser']) ? $prev['browser'] : '';
if(isset($data->branches[$bugID]) and $data->branches[$bugID] == 'ditto') $data->branches[$bugID] = isset($prev['branch']) ? $prev['branch'] : 0;
$prev['type'] = $data->types[$bugID];
@@ -817,8 +821,6 @@ class bugModel extends model
$prev['assignedTo'] = $data->assignedTos[$bugID];
$prev['resolvedBy'] = $data->resolvedBys[$bugID];
$prev['resolution'] = $data->resolutions[$bugID];
- $prev['os'] = $data->os[$bugID];
- $prev['browser'] = $data->browsers[$bugID];
}
/* Initialize bugs from the post data.*/
@@ -828,6 +830,9 @@ class bugModel extends model
{
$oldBug = $oldBugs[$bugID];
+ $os = array_filter($data->os[$bugID]);
+ $browsers = array_filter($data->browsers[$bugID]);
+
$bug = new stdclass();
$bug->id = $bugID;
$bug->lastEditedBy = $this->app->user->account;
@@ -840,12 +845,12 @@ class bugModel extends model
$bug->plan = empty($data->plans[$bugID]) ? 0 : $data->plans[$bugID];
$bug->branch = empty($data->branches[$bugID]) ? 0 : $data->branches[$bugID];
$bug->module = $data->modules[$bugID];
- $bug->assignedTo = $data->assignedTos[$bugID];
+ $bug->assignedTo = $bug->status == 'closed' ? $oldBug->assignedTo : $data->assignedTos[$bugID];
$bug->deadline = $data->deadlines[$bugID];
$bug->resolvedBy = $data->resolvedBys[$bugID];
$bug->keywords = $data->keywords[$bugID];
- $bug->os = $data->os[$bugID];
- $bug->browser = $data->browsers[$bugID];
+ $bug->os = implode(',', $os);
+ $bug->browser = implode(',', $browsers);
$bug->resolution = $data->resolutions[$bugID];
$bug->duplicateBug = $data->duplicateBugs[$bugID] ? $data->duplicateBugs[$bugID] : $oldBug->duplicateBug;
@@ -1004,6 +1009,8 @@ class bugModel extends model
{
$now = helper::now();
$oldBug = $this->getById($bugID);
+ if($oldBug->status == 'closed') return false;
+
$bug = fixer::input('post')
->add('id', $bugID)
->setDefault('lastEditedBy', $this->app->user->account)
@@ -3170,9 +3177,25 @@ class bugModel extends model
}
}
- $bugLink = helper::createLink('bug', 'view', "bugID=$bug->id");
- $account = $this->app->user->account;
- $id = $col->id;
+ $bugLink = helper::createLink('bug', 'view', "bugID=$bug->id");
+ $account = $this->app->user->account;
+ $id = $col->id;
+ $os = '';
+ $browser = '';
+ $osList = explode(',', $bug->os);
+ $browserList = explode(',', $bug->browser);
+ foreach($osList as $value)
+ {
+ if(empty($value)) continue;
+ $os .= $this->lang->bug->osList[$value] . ',';
+ }
+ foreach($browserList as $value)
+ {
+ if(empty($value)) continue;
+ $browser .= $this->lang->bug->browserList[$value] . ',';
+ }
+ $os = trim($os, ',');
+ $browser = trim($browser, ',');
if($col->show)
{
$class = "c-$id";
@@ -3221,6 +3244,14 @@ class bugModel extends model
$class .= ' text-ellipsis';
$title = "title='" . $bug->resolvedBuild . "'";
break;
+ case 'os':
+ $class .= ' text-ellipsis';
+ $title = "title='" . $os . "'";
+ break;
+ case 'browser':
+ $class .= ' text-ellipsis';
+ $title = "title='" . $browser . "'";
+ break;
}
if($id == 'deadline' && isset($bug->delay) && $bug->status == 'active') $class .= ' delayed';
@@ -3319,10 +3350,10 @@ class bugModel extends model
echo $bug->keywords;
break;
case 'os':
- echo zget($this->lang->bug->osList, $bug->os);
+ echo $os;
break;
case 'browser':
- echo zget($this->lang->bug->browserList, $bug->browser);
+ echo $browser;
break;
case 'mailto':
$mailto = explode(',', $bug->mailto);
@@ -3528,7 +3559,7 @@ class bugModel extends model
$toStoryParams = "product=$bug->product&branch=$bug->branch&module=0&story=0&execution=0&bugID=$bug->id";
$menu .= $this->buildMenu('bug', 'confirmBug', $params, $bug, $type, 'ok', '', "iframe", true);
- if($type == 'view') $menu .= $this->buildMenu('bug', 'assignTo', $params, $bug, $type, '', '', "iframe", true);
+ if($type == 'view' and $bug->status != 'closed') $menu .= $this->buildMenu('bug', 'assignTo', $params, $bug, $type, '', '', "iframe", true);
$menu .= $this->buildMenu('bug', 'resolve', $params, $bug, $type, 'checked', '', "iframe showinonlybody", true);
$menu .= $this->buildMenu('bug', 'close', $params, $bug, $type, '', '', "text-danger iframe showinonlybody", true);
if($type == 'view') $menu .= $this->buildMenu('bug', 'activate', $params, $bug, $type, '', '', "text-success iframe showinonlybody", true);
diff --git a/module/bug/view/batchcreate.html.php b/module/bug/view/batchcreate.html.php
index 762b5634ed..5e167e4891 100755
--- a/module/bug/view/batchcreate.html.php
+++ b/module/bug/view/batchcreate.html.php
@@ -92,8 +92,6 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
$executions += array('ditto' => $lang->bug->ditto);
$lang->bug->typeList += array('ditto' => $lang->bug->ditto);
$lang->bug->priList += array('ditto' => $lang->bug->ditto);
- $lang->bug->osList += array('ditto' => $lang->bug->ditto);
- $lang->bug->browserList += array('ditto' => $lang->bug->ditto);
?>
@@ -104,8 +102,6 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
$executionID = $i == 1 ? $executionID : 'ditto';
$type = $i == 1 ? '' : 'ditto';
$pri = $i == 1 ? 0 : 'ditto';
- $os = $i == 1 ? '' : 'ditto';
- $browser = $i == 1 ? '' : 'ditto';
?>
|
@@ -139,8 +135,8 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
typeBox' style='overflow:visible'> bug->typeList, $type, "class='form-control chosen'");?> |
priBox' style='overflow:visible'> bug->priList, $pri, "class='form-control'");?> |
severityBox' style='overflow:visible'>bug->severityList, '3', "class='form-control'");?> |
- osBox' style='overflow:visible'> bug->osList, $os, "class='form-control chosen'");?> |
- browserBox' style='overflow:visible'> bug->browserList, $browser, "class='form-control chosen'");?> |
+ osBox' style='overflow:visible'> bug->osList, '', "class='form-control chosen' multiple");?> |
+ browserBox' style='overflow:visible'> bug->browserList, '', "class='form-control chosen' multiple");?> |
keywordsBox'> |
loadModel('flow');
@@ -164,8 +160,6 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
$executionID = $i - $nextStart == 0 ? $executionID : 'ditto';
$type = $i - $nextStart == 0 ? '' : 'ditto';
$pri = $i - $nextStart == 0 ? 0 : 'ditto';
- $os = $i - $nextStart == 0 ? '' : 'ditto';
- $browser = $i - $nextStart == 0 ? '' : 'ditto';
?>
|
@@ -199,8 +193,8 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
typeBox' style='overflow:visible'> bug->typeList, $type, "class='form-control chosen'");?> |
priBox' style='overflow:visible'> bug->priList, $pri, "class='form-control'");?> |
severityBox' style='overflow:visible'>bug->severityList, '3', "class='form-control'");?> |
- osBox' style='overflow:visible'> bug->osList, $os, "class='form-control chosen'");?> |
- browserBox' style='overflow:visible'> bug->browserList, $browser, "class='form-control chosen'");?> |
+ osBox' style='overflow:visible'> bug->osList, '', "class='form-control chosen' multiple");?> |
+ browserBox' style='overflow:visible'> bug->browserList, '', "class='form-control chosen' multiple");?> |
keywordsBox'> |
loadModel('flow');
@@ -258,8 +252,8 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
typeBox' style='overflow:visible'> bug->typeList, $type, "class='form-control chosen'");?> |
priBox' style='overflow:visible'> bug->priList, $pri, "class='form-control'");?> |
severityBox' style='overflow:visible'>bug->severityList, '3', "class='form-control'");?> |
- osBox' style='overflow:visible'> bug->osList, $os, "class='form-control chosen'");?> |
- browserBox' style='overflow:visible'> bug->browserList, $browser, "class='form-control chosen'");?> |
+ osBox' style='overflow:visible'> bug->osList, '', "class='form-control chosen' multiple");?> |
+ browserBox' style='overflow:visible'> bug->browserList, '', "class='form-control chosen' multiple");?> |
keywordsBox'> |
loadModel('flow');
@@ -307,8 +301,8 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field)
typeBox' style='overflow:visible'> bug->typeList, $type, "class='form-control chosen'");?> |
priBox' style='overflow:visible'> bug->priList, $pri, "class='form-control'");?> |
severityBox' style='overflow:visible'>bug->severityList, '3', "class='form-control'");?> |
- osBox' style='overflow:visible'> bug->osList, $os, "class='form-control chosen'");?> |
- browserBox' style='overflow:visible'> bug->browserList, $browser, "class='form-control chosen'");?> |
+ osBox' style='overflow:visible'> bug->osList, '', "class='form-control chosen' multiple");?> |
+ browserBox' style='overflow:visible'> bug->browserList, '', "class='form-control chosen' multiple");?> |
keywordsBox'> |
loadModel('flow');
diff --git a/module/bug/view/batchedit.html.php b/module/bug/view/batchedit.html.php
index 68d5f4bd91..20ecce70db 100644
--- a/module/bug/view/batchedit.html.php
+++ b/module/bug/view/batchedit.html.php
@@ -132,10 +132,10 @@
unset($assignedToList['closed']);
}
?>
- ' style='overflow:visible'>assignedTo, "class='form-control picker-select' data-drop-width='135px'");?> |
+ ' style='overflow:visible'>status == 'closed' ? ucfirst($bug->assignedTo) : html::select("assignedTos[$bugID]", $assignedToList, $bug->assignedTo, "class='form-control picker-select' data-drop-width='135px'");?> |
' style='overflow:visible'>deadline) ? '' : $bug->deadline, "class='form-control form-date'");?> |
- >os, 'class=form-control');?> |
- >browser, 'class=form-control');?> |
+ >bug->osList, $bug->os, 'class="form-control chosen" multiple');?> |
+ >bug->browserList, $bug->browser, 'class="form-control chosen" multiple');?> |
>keywords, 'class=form-control');?> |
' style='overflow:visible'>resolvedBy, "class='form-control picker-select' data-drop-width='auto'");?> |
>
diff --git a/module/bug/view/browse.html.php b/module/bug/view/browse.html.php
index b3e3e81c65..248a4d7f4a 100644
--- a/module/bug/view/browse.html.php
+++ b/module/bug/view/browse.html.php
@@ -403,7 +403,7 @@ $currentBrowseType = isset($lang->bug->mySelects[$browseType]) && in_array($brow
-
+
6;?>
|
@@ -186,7 +194,7 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
bug->os?>
- bug->osList, $os, "class='form-control chosen'");?>
+ bug->osList, $os, "class='form-control chosen' multiple");?>
@@ -194,7 +202,7 @@ if($this->app->tab == 'project') js::set('objectID', $projectID);
bug->browser?>
- bug->browserList, $browser, "class='form-control chosen'");?>
+ bug->browserList, $browser, "class='form-control chosen' multiple");?>
diff --git a/module/bug/view/edit.html.php b/module/bug/view/edit.html.php
index 94596414f9..6e41532080 100644
--- a/module/bug/view/edit.html.php
+++ b/module/bug/view/edit.html.php
@@ -153,10 +153,14 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
| bug->assignedTo;?> |
+ status == 'closed'):?>
+ assignedTo);?>
+
assignedTo, "class='form-control chosen'");?>
bug->allUsers, "class='btn btn-default' onclick='loadAllUsers()' data-toggle='tooltip'");?>
+
|
@@ -173,11 +177,11 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
| bug->os;?> |
- bug->osList, $bug->os, "class='form-control chosen'");?> |
+ bug->osList, $bug->os, "class='form-control chosen' multiple");?> |
| bug->browser;?> |
- bug->browserList, $bug->browser, "class='form-control chosen'");?> |
+ bug->browserList, $bug->browser, "class='form-control chosen' multiple");?> |
| bug->keywords;?> |
@@ -282,7 +286,7 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
bug->linkBug;?> |
createLink('bug', 'linkBugs', "bugID=$bug->id", '', true), $lang->bug->linkBugs, '', "class='text-primary' data-toggle='modal' data-type='iframe' data-width='95%'");?> |
-
+
linkBugTitles)) echo 'class="hidden"';?>>
|
@@ -306,12 +310,10 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
| bug->testtask;?> |
testtask, 'class="form-control chosen"');?> |
|
- case):?>
| bug->fromCase;?> |
- case, 'class="form-control"');?> |
+ case, 'class="form-control picker-select"');?> |
-
diff --git a/module/bug/view/linkbugs.html.php b/module/bug/view/linkbugs.html.php
index 6f883c20ae..ba9f34c460 100644
--- a/module/bug/view/linkbugs.html.php
+++ b/module/bug/view/linkbugs.html.php
@@ -90,7 +90,7 @@ $(function()
output += checkbox;
});
$.closeModal();
- parent.$('#linkBugsBox').html(output);
+ parent.$('#linkBugsBox').html(output).closest('tr').removeClass('hidden');
return false;
});
});
diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php
index 46013377fa..2b78e900a7 100644
--- a/module/bug/view/view.html.php
+++ b/module/bug/view/view.html.php
@@ -232,11 +232,29 @@
| bug->os;?> |
- bug->osList[$bug->os];?> |
+
+ os);?>
+
+
+
+ " . zget($lang->bug->osList, $os) . "";?>
+
+
+
+ |
| bug->browser;?> |
- bug->browserList[$bug->browser];?> |
+
+ browser);?>
+
+
+
+ " . zget($lang->bug->browserList, $browser) . "";?>
+
+
+
+ |
| bug->keywords;?> |
diff --git a/module/caselib/model.php b/module/caselib/model.php
index 70e2e2cedb..1485f1c83f 100644
--- a/module/caselib/model.php
+++ b/module/caselib/model.php
@@ -647,7 +647,7 @@ class caselibModel extends model
$menu = '';
$params = "caseID=$case->id";
- if($this->config->testcase->needReview || !empty($this->config->testcase->forceReview))
+ if($case->status == 'wait' and ($this->config->testcase->needReview or !empty($this->config->testcase->forceReview)))
{
$menu .= $this->buildMenu('testcase', 'review', $params, $case, 'browse', 'glasses', '', 'iframe');
}
diff --git a/module/ci/model.php b/module/ci/model.php
index 0d27513edc..472a3449a2 100644
--- a/module/ci/model.php
+++ b/module/ci/model.php
@@ -29,9 +29,11 @@ class ciModel extends model
if($this->session->repoID)
{
$repo = $this->loadModel('repo')->getRepoByID($this->session->repoID);
- if(!in_array(strtolower($repo->SCM), $this->config->repo->gitServiceList)) unset($this->lang->devops->menu->mr);
+ if(!empty($repo) and !in_array(strtolower($repo->SCM), $this->config->repo->gitServiceList)) unset($this->lang->devops->menu->mr);
- $this->lang->switcherMenu = $this->loadModel('repo')->getSwitcher($this->session->repoID);
+ $tab = $this->app->tab;
+ $repos = $this->repo->getRepoPairs($tab);
+ if(count($repos) > 1) $this->lang->switcherMenu = $this->loadModel('repo')->getSwitcher($this->session->repoID);
}
}
@@ -180,11 +182,12 @@ class ciModel extends model
$data = new stdclass;
$data->status = $pipeline->status;
$data->updateDate = $now;
+ $data->logs = '';
foreach($jobs as $job)
{
if(empty($job->duration) or $job->duration == '') $job->duration = '-';
- $data->logs = ">>> Job: $job->name, Stage: $job->stage, Status: $job->status, Duration: $job->duration Sec\r\n ";
+ $data->logs .= ">>> Job: $job->name, Stage: $job->stage, Status: $job->status, Duration: $job->duration Sec\r\n ";
$data->logs .= "Job URL: web_url\" target='_blank'>$job->web_url \r\n";
$data->logs .= $this->transformAnsiToHtml($this->gitlab->apiGetJobLog($compile->server, $compile->project, $job->id));
}
diff --git a/module/common/lang/common.php b/module/common/lang/common.php
index de8339b4a3..a9b7bd71ee 100644
--- a/module/common/lang/common.php
+++ b/module/common/lang/common.php
@@ -45,6 +45,7 @@ $lang->repo = new stdclass();
$lang->jenkins = new stdclass();
$lang->gitlab = new stdclass();
$lang->gitea = new stdclass();
+$lang->gogs = new stdclass();
$lang->mr = new stdclass();
$lang->compile = new stdclass();
$lang->job = new stdclass();
diff --git a/module/common/lang/menu.php b/module/common/lang/menu.php
index 2dbdd5af4f..7ad22b51dd 100644
--- a/module/common/lang/menu.php
+++ b/module/common/lang/menu.php
@@ -411,7 +411,7 @@ $lang->devops->menu->code = array('link' => "{$lang->repo->common}|repo|brows
$lang->devops->menu->mr = array('link' => "{$lang->devops->mr}|mr|browse|repoID=%s");
$lang->devops->menu->compile = array('link' => "{$lang->devops->compile}|job|browse|repoID=%s", 'subModule' => 'compile,job');
$lang->devops->menu->app = array('link' => "{$lang->app->common}|app|serverlink|%s");
-$lang->devops->menu->set = array('link' => "{$lang->devops->set}|repo|maintain", 'subModule' => 'gitlab,jenkins,sonarqube,gitea', 'alias' => 'setrules,create,edit');
+$lang->devops->menu->set = array('link' => "{$lang->devops->set}|repo|maintain", 'subModule' => 'gitlab,jenkins,sonarqube,gitea,gogs', 'alias' => 'setrules,create,edit');
$lang->devops->menuOrder[5] = 'code';
$lang->devops->menuOrder[10] = 'mr';
@@ -424,6 +424,7 @@ $lang->devops->dividerMenu = ',set,';
$lang->devops->menu->set['subMenu'] = new stdclass();
$lang->devops->menu->set['subMenu']->repo = array('link' => "{$lang->devops->repo}|repo|maintain", 'alias' => 'create,edit');
$lang->devops->menu->set['subMenu']->gitlab = array('link' => 'GitLab|gitlab|browse', 'subModule' => 'gitlab');
+$lang->devops->menu->set['subMenu']->gogs = array('link' => 'Gogs|gogs|browse', 'subModule' => 'gogs');
$lang->devops->menu->set['subMenu']->gitea = array('link' => 'Gitea|gitea|browse', 'subModule' => 'gitea');
$lang->devops->menu->set['subMenu']->jenkins = array('link' => 'Jenkins|jenkins|browse', 'subModule' => '');
$lang->devops->menu->set['subMenu']->sonarqube = array('link' => 'SonarQube|sonarqube|browse', 'subModule' => 'sonarqube');
@@ -513,7 +514,7 @@ if($config->edition == 'max') $lang->admin->menu->model['dropMenu']->scrum = arr
if($config->systemMode == 'new')
{
- $lang->admin->menu->model['dropMenu']->waterfall = array('link' => "{$lang->waterfallModel}|stage|setType|", 'subModule' => 'stage,auditcl,cmcl,process,activity,zoutput,classify,reviewcl,reviewsetting');
+ $lang->admin->menu->model['dropMenu']->waterfall = array('link' => "{$lang->waterfallModel}|stage|setType|", 'subModule' => 'stage,auditcl,cmcl,process,activity,zoutput,classify,reviewcl,reviewsetting,design');
}
$lang->admin->menu->allModel['subMenu'] = new stdclass();
@@ -663,6 +664,7 @@ $lang->navGroup->job = 'devops';
$lang->navGroup->jenkins = 'devops';
$lang->navGroup->mr = 'devops';
$lang->navGroup->gitlab = 'devops';
+$lang->navGroup->gogs = 'devops';
$lang->navGroup->gitea = 'devops';
$lang->navGroup->sonarqube = 'devops';
$lang->navGroup->sonarqubeproject = 'devops';
diff --git a/module/common/model.php b/module/common/model.php
index 4e965e2fb3..7c784829f1 100644
--- a/module/common/model.php
+++ b/module/common/model.php
@@ -66,7 +66,7 @@ class commonModel extends model
if($rawModule == 'execution')
{
$executionID = $objectID;
- $execution = $this->dao->select('id, project, grade, parent')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
+ $execution = $this->dao->select('id, project, grade, parent, status, deleted')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch();
$this->syncExecutionByChild($execution);
$project = $this->syncProjectStatus($execution);
$this->syncProgramStatus($project);
@@ -153,7 +153,7 @@ class commonModel extends model
$today = helper::today();
$parentExecution = $this->dao->select('*')->from(TABLE_EXECUTION)->where('id')->eq($parentExecutionID)->fetch();
- if($parentExecution->status == 'wait')
+ if($execution->deleted == '0' and $execution->status == 'doing' and in_array($parentExecution->status, array('wait', 'closed')))
{
$this->dao->update(TABLE_EXECUTION)
->set('status')->eq('doing')
@@ -163,6 +163,32 @@ class commonModel extends model
$this->loadModel('action')->create('execution', $parentExecutionID, 'syncexecutionbychild');
}
+ if($parentExecution->type == 'stage')
+ {
+ $childExecutions = $this->dao->select('*')->from(TABLE_EXECUTION)->where('parent')->eq($parentExecutionID)->andWhere('deleted')->eq('0')->fetchAll('id');
+ if($execution->deleted == '1' and count($childExecutions) > 0)
+ {
+ $childWait = true;
+ $childClosed = true;
+ foreach($childExecutions as $childExecution)
+ {
+ if($childExecution->status != 'wait') $childWait = false;
+ if($childExecution->status != 'closed') $childClosed = false;
+ }
+
+ if($childWait and $parentExecution->status != 'wait')
+ {
+ $this->dao->update(TABLE_EXECUTION)->set('status')->eq('wait')->where('id')->eq($parentExecutionID)->exec();
+ $this->loadModel('action')->create('execution', $parentExecutionID, 'waitbychilddelete');
+ }
+ if($childClosed and $parentExecution->status != 'closed')
+ {
+ $this->dao->update(TABLE_EXECUTION)->set('status')->eq('closed')->where('id')->eq($parentExecutionID)->exec();
+ $this->loadModel('action')->create('execution', $parentExecutionID, 'closebychilddelete');
+ }
+ }
+ }
+
return $parentExecution;
}
@@ -185,6 +211,11 @@ class commonModel extends model
{
$this->dao->update(TABLE_EXECUTION)->set('status')->eq('doing')->set('realBegan')->eq($today)->where('id')->eq($execution->id)->exec();
$this->loadModel('action')->create('execution', $execution->id, 'syncexecution');
+ if($execution->parent)
+ {
+ $execution = $this->dao->select('*')->from(TABLE_EXECUTION)->where('id')->eq($execution->id)->fetch(); // Get updated execution.
+ $this->syncExecutionByChild($execution);
+ }
}
return $execution;
}
diff --git a/module/common/view/noticeimport.html.php b/module/common/view/noticeimport.html.php
index 600fcbea00..5f87dd9b43 100644
--- a/module/common/view/noticeimport.html.php
+++ b/module/common/view/noticeimport.html.php
@@ -27,7 +27,5 @@ function submitForm(type)
$('.modal-body #insert').val(type == 'insert' ? 1 : 0);
$('#importNoticeModal .form-actions .btn').addClass('disabled');
$("button[data-target='#importNoticeModal']").closest('form').submit();
-
- setTimeout(function(){$('#importNoticeModal .form-actions .btn').removeClass('disabled');}, 1000);
}
diff --git a/module/compile/control.php b/module/compile/control.php
index c640359571..0eaa972775 100644
--- a/module/compile/control.php
+++ b/module/compile/control.php
@@ -47,6 +47,8 @@ class compile extends control
$this->view->job = $job;
}
+ $this->compile->syncCompile($repoID, $jobID);
+
$this->app->loadLang('job');
$this->loadModel('ci')->setMenu($repoID);
@@ -77,7 +79,11 @@ class compile extends control
$build = $this->compile->getByID($buildID);
$job = $this->loadModel('job')->getByID($build->job);
- $this->view->logs = str_replace("\r\n","
", $build->logs);
+ if(empty($build->logs) and !in_array($build->status, array('created', 'pending'))) $build->logs = $this->compile->getLogs($job, $build);
+ $logs = str_replace("\r\n", "
", $build->logs);
+ $logs = str_replace("\n", "
", $logs);
+
+ $this->view->logs = $logs;
$this->view->build = $build;
$this->view->job = $job;
@@ -87,5 +93,23 @@ class compile extends control
$this->view->position[] = $this->lang->compile->logs;
$this->display();
}
+
+ /**
+ * Sync compiles.
+ *
+ * @access public
+ * @return bool
+ */
+ public function syncCompile()
+ {
+ $this->compile->syncCompile();
+
+ if(dao::isError())
+ {
+ echo json_encode(dao::getError());
+ return true;
+ }
+ echo 'success';
+ }
}
diff --git a/module/compile/lang/de.php b/module/compile/lang/de.php
index dfd19b4832..6ca3125a19 100644
--- a/module/compile/lang/de.php
+++ b/module/compile/lang/de.php
@@ -1,7 +1,8 @@
compile->common = 'Compile';
-$lang->compile->browse = 'History';
-$lang->compile->logs = 'Logs';
+$lang->compile->common = 'Compile';
+$lang->compile->browse = 'History';
+$lang->compile->logs = 'Logs';
+$lang->compile->syncCompile = 'Interface: Sync Compiles.';
$lang->compile->id = 'ID';
$lang->compile->name = 'Name';
diff --git a/module/compile/lang/en.php b/module/compile/lang/en.php
index 68e5655bbb..cb397946ca 100644
--- a/module/compile/lang/en.php
+++ b/module/compile/lang/en.php
@@ -1,7 +1,8 @@
compile->common = 'Compile';
-$lang->compile->browse = 'History';
-$lang->compile->logs = 'Log';
+$lang->compile->common = 'Compile';
+$lang->compile->browse = 'History';
+$lang->compile->logs = 'Log';
+$lang->compile->syncCompile = 'Interface: Sync Compiles.';
$lang->compile->id = 'ID';
$lang->compile->name = 'Name';
diff --git a/module/compile/lang/fr.php b/module/compile/lang/fr.php
index b53d0e038c..6d8eccec72 100644
--- a/module/compile/lang/fr.php
+++ b/module/compile/lang/fr.php
@@ -1,7 +1,8 @@
compile->common = 'Build';
-$lang->compile->browse = 'Historique Builds';
-$lang->compile->logs = 'Logs des Builds';
+$lang->compile->common = 'Build';
+$lang->compile->browse = 'Historique Builds';
+$lang->compile->logs = 'Logs des Builds';
+$lang->compile->syncCompile = 'Interface: Sync Compiles.';
$lang->compile->id = 'ID';
$lang->compile->name = 'Nom';
diff --git a/module/compile/lang/vi.php b/module/compile/lang/vi.php
index b5f3389644..05d762a745 100644
--- a/module/compile/lang/vi.php
+++ b/module/compile/lang/vi.php
@@ -1,7 +1,8 @@
compile->common = 'Compile';
-$lang->compile->browse = 'Lịch sử';
-$lang->compile->logs = 'Nhật ký';
+$lang->compile->common = 'Compile';
+$lang->compile->browse = 'Lịch sử';
+$lang->compile->logs = 'Nhật ký';
+$lang->compile->syncCompile = 'Interface: Sync Compiles.';
$lang->compile->id = 'ID';
$lang->compile->name = 'Tên';
diff --git a/module/compile/lang/zh-cn.php b/module/compile/lang/zh-cn.php
index e4e328cf01..395474b4d6 100644
--- a/module/compile/lang/zh-cn.php
+++ b/module/compile/lang/zh-cn.php
@@ -1,7 +1,8 @@
compile->common = '构建';
-$lang->compile->browse = '构建历史';
-$lang->compile->logs = '构建日志';
+$lang->compile->common = '构建';
+$lang->compile->browse = '构建历史';
+$lang->compile->logs = '构建日志';
+$lang->compile->syncCompile = '接口:同步构建记录';
$lang->compile->id = 'ID';
$lang->compile->name = '构建名称';
diff --git a/module/compile/model.php b/module/compile/model.php
index 44a1e37ee5..c46cb33c72 100644
--- a/module/compile/model.php
+++ b/module/compile/model.php
@@ -134,6 +134,59 @@ class compileModel extends model
return $url;
}
+ /**
+ * Get compile logs.
+ *
+ * @param object $job
+ * @param object $compile
+ * @access public
+ * @return string
+ */
+ public function getLogs($job, $compile)
+ {
+ $logs = '';
+
+ if($job->engine == 'jenkins')
+ {
+ $jenkins = $this->loadModel('jenkins')->getByID($job->server);
+ $jenkinsUser = $jenkins->account;
+ $jenkinsPassword = $jenkins->token ? $jenkins->token : base64_decode($jenkins->password);
+ $userPWD = "$jenkinsUser:$jenkinsPassword";
+
+ $infoUrl = sprintf('%s/job/%s/api/xml?tree=builds[id,number,queueId]&xpath=//build[queueId=%s]', $jenkins->url, $job->pipeline, $compile->queue);
+ $response = common::http($infoUrl, '', array(CURLOPT_USERPWD => $userPWD));
+ if($response)
+ {
+ $buildInfo = simplexml_load_string($response);
+ $buildNumber = $buildInfo->number;
+ if(empty($buildNumber)) return '';
+
+ $logUrl = sprintf('%s/job/%s/%s/consoleText', $jenkins->url, $job->pipeline, $buildNumber);
+ $logs = common::http($logUrl, '', array(CURLOPT_USERPWD => $userPWD));
+ $this->dao->update(TABLE_COMPILE)->set('logs')->eq($logs)->where('id')->eq($compile->id)->exec();
+ }
+ }
+ else
+ {
+ /* Get jobs by pipeline. */
+ $pipeline = json_decode($job->pipeline);
+ $projectID = isset($pipeline->project) ? $pipeline->project : '';
+ $jobs = $this->loadModel('gitlab')->apiGetJobs($job->server, $projectID, $compile->queue);
+
+ $this->loadModel('ci');
+ foreach($jobs as $gitlabJob)
+ {
+ if(empty($gitlabJob->duration) or $gitlabJob->duration == '') $gitlabJob->duration = '-';
+ $logs .= ">>> Job: $gitlabJob->name, Stage: $gitlabJob->stage, Status: $gitlabJob->status, Duration: $gitlabJob->duration Sec\r\n ";
+ $logs .= "Job URL: web_url\" target='_blank'>$gitlabJob->web_url \r\n";
+ $logs .= $this->ci->transformAnsiToHtml($this->gitlab->apiGetJobLog($job->server, $projectID, $gitlabJob->id));
+ }
+ }
+
+ if(!empty($logs)) $this->dao->update(TABLE_COMPILE)->set('logs')->eq($logs)->where('id')->eq($compile->id)->exec();
+ return $logs;
+ }
+
/**
* Save build by job
*
@@ -157,6 +210,137 @@ class compileModel extends model
$this->dao->insert(TABLE_COMPILE)->data($build)->exec();
}
+ /**
+ * Sync compiles.
+ *
+ * @param int $repoID
+ * @param int $repoID
+ * @access public
+ * @return void
+ */
+ public function syncCompile($repoID = 0, $jobID = 0)
+ {
+ if($jobID)
+ {
+ $jobList[$jobID] = $this->loadModel('job')->getByID($jobID);
+ }
+ else
+ {
+ $jobList = $this->loadModel('job')->getList($repoID);
+ }
+
+ $jenkinsPairs = $this->loadModel('pipeline')->getList('jenkins');
+ $gitlabPairs = $this->loadModel('pipeline')->getList('gitlab');
+
+ foreach($jobList as $job)
+ {
+ if($job->engine == 'jenkins')
+ {
+ $server = zget($jenkinsPairs, $job->server);
+ $this->syncJenkinsBuildList($server, $job);
+ }
+ else
+ {
+ $server = zget($gitlabPairs, $job->server);
+ $this->syncGitLabBuildList($server, $job);
+ }
+ }
+ }
+
+ /**
+ * Sync jenkins build list.
+ *
+ * @param object $jenkins
+ * @param object $job
+ * @access public
+ * @return void
+ */
+ public function syncJenkinsBuildList($jenkins, $job)
+ {
+ $jenkinsUser = $jenkins->account;
+ $jenkinsPassword = $jenkins->token ? $jenkins->token : base64_decode($jenkins->password);
+
+ /* Get build list by API. */
+ $url = sprintf('%s/job/%s/api/json?tree=builds[id,number,result,queueId,timestamp]', $jenkins->url, $job->pipeline);
+ $response = common::http($url, '', array(CURLOPT_USERPWD => "$jenkinsUser:$jenkinsPassword"));
+ if(!$response) return false;
+
+ $compilePairs = $this->dao->select('queue,job')->from(TABLE_COMPILE)->where('job')->eq($job->id)->andWhere('queue')->gt(0)->fetchPairs();
+ $jobInfo = json_decode($response);
+ foreach($jobInfo->builds as $build)
+ {
+ $lastSyncTime = strtotime($job->lastSyncDate);
+ if($build->timestamp < $lastSyncTime * 1000) break;
+ if(isset($compilePairs[$build->queueId])) continue;
+
+ $data = new stdclass();
+ $data->name = $job->name;
+ $data->job = $job->id;
+ $data->queue = $build->queueId;
+ $data->status = $build->result == 'SUCCESS' ? 'success' : 'failure';
+ $data->createdBy = 'guest';
+ $data->createdDate = date('Y-m-d H:i:s', $build->timestamp / 1000);
+ $data->updateDate = $data->createdDate;
+
+ $this->dao->insert(TABLE_COMPILE)->data($data)->exec();
+ }
+
+ $now = helper::now();
+ $this->dao->update(TABLE_JOB)->set('lastSyncDate')->eq($now)->where('id')->eq($job->id)->exec();
+ }
+
+ /**
+ * Sync gitlab build list.
+ *
+ * @param object $gitlab
+ * @param object $job
+ * @access public
+ * @return void
+ */
+ public function syncGitlabBuildList($gitlab, $job)
+ {
+ $pipeline = json_decode($job->pipeline);
+ $projectID = isset($pipeline->project) ? $pipeline->project : '';
+ $ref = isset($pipeline->reference) ? $pipeline->reference : '';
+ $url = sprintf($this->loadModel('gitlab')->getApiRoot($gitlab->id, false), "/projects/{$projectID}/pipelines");
+
+ /* Get build list by API. */
+ for($page = 1; true; $page++)
+ {
+ $param = $job->lastSyncDate ? '&updated_after=' . date('YYYY-MM-DDThh:mm:ssZ', strtotime($job->lastSyncDate)) : '';
+ $builds = json_decode(commonModel::http($url . "&ref={$ref}&order_by=id&sort=asc&page={$page}&per_page=100" . $param));
+ if(!is_array($builds)) break;
+
+ if(!empty($builds))
+ {
+ $queueIDList = array();
+ foreach($builds as $build) $queueIDList[] = $build->id;
+ $compilePairs = $this->dao->select('queue,job')->from(TABLE_COMPILE)->where('job')->eq($job->id)->andWhere('queue')->in($queueIDList)->fetchPairs();
+
+ foreach($builds as $build)
+ {
+ if(isset($compilePairs[$build->id])) continue;
+
+ $data = new stdclass();
+ $data->name = $job->name;
+ $data->job = $job->id;
+ $data->queue = $build->id;
+ $data->status = $build->status;
+ $data->createdBy = 'guest';
+ $data->createdDate = date('Y-m-d H:i:s', strtotime($build->created_at));
+ $data->updateDate = date('Y-m-d H:i:s', strtotime($build->updated_at));
+
+ $this->dao->insert(TABLE_COMPILE)->data($data)->exec();
+ }
+ }
+
+ if(count($builds) < 100) break;
+ }
+
+ $now = helper::now();
+ $this->dao->update(TABLE_JOB)->set('lastSyncDate')->eq($now)->where('id')->eq($job->id)->exec();
+ }
+
/**
* Execute compile
*
diff --git a/module/design/model.php b/module/design/model.php
index 05ecc5863f..7fa9c33108 100644
--- a/module/design/model.php
+++ b/module/design/model.php
@@ -403,7 +403,16 @@ class designModel extends model
*/
public function setMenu($projectID, $products, $productID = 0)
{
- if($this->app->rawMethod != 'browse') unset($this->lang->waterfall->menu->design['subMenu']->bysearch);
+ /* Show custom design types. */
+ $this->lang->waterfall->menu->design['subMenu'] = new stdclass();
+ $this->lang->waterfall->menu->design['subMenu']->all = array('link' => "{$this->lang->all}|design|browse|projectID=%s&productID=0&browseType=all");
+ foreach(array_filter($this->lang->design->typeList) as $key => $value)
+ {
+ $this->lang->waterfall->menu->design['subMenu']->$key = array('link' => "{$value}|design|browse|projectID=%s&productID=0&browseType={$key}");
+ }
+
+ if($this->app->rawMethod == 'browse') $this->lang->waterfall->menu->design['subMenu']->bysearch = array('link' => ' ' . $this->lang->searchAB . '');
+
if(empty($products) || !$productID) return '';
$currentProduct = $this->loadModel('product')->getById($productID);
setCookie("lastProduct", $productID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
diff --git a/module/doc/control.php b/module/doc/control.php
index 4444f8b7cf..3335e01e46 100755
--- a/module/doc/control.php
+++ b/module/doc/control.php
@@ -1126,7 +1126,7 @@ class doc extends control
foreach(explode(',', $this->config->doc->customObjectLibs) as $libType) $customObjectLibs[$libType] = $this->lang->doc->customObjectLibs[$libType];
$actionURL = $this->createLink('doc', 'browse', "lib=0&browseType=bySearch&queryID=myQueryID");
- $this->doc->buildSearchForm(0, array(), 0, $actionURL, 'objectLibs');
+ $this->doc->buildSearchForm(0, array(), 0, $actionURL, $type);
$moduleTree = $type == 'book' ? $this->doc->getBookStructure($libID) : $this->doc->getTreeMenu($type, $objectID, $libID, 0, $docID);
diff --git a/module/execution/control.php b/module/execution/control.php
index db4c761453..c8b7475689 100644
--- a/module/execution/control.php
+++ b/module/execution/control.php
@@ -469,10 +469,13 @@ class execution extends control
*
* @param int $executionID
* @param int $fromExecution
+ * @param int $recTotal
+ * @param int $recPerPage
+ * @param int $pageID
* @access public
* @return void
*/
- public function importTask($toExecution, $fromExecution = 0)
+ public function importTask($toExecution, $fromExecution = 0, $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
if(!empty($_POST))
{
@@ -509,13 +512,20 @@ class execution extends control
$tasks2Imported = zget($tasks, $fromExecution, array());
}
+ /* Pager. */
+ $this->app->loadClass('pager', $static = true);
+ $recTotal = count($tasks2Imported);
+ $pager = new pager($recTotal, $recPerPage, $pageID);
+ $tasks2ImportedList = array_chunk($tasks2Imported, $pager->recPerPage, true);
+
/* Save session. */
$this->app->session->set('taskList', $this->app->getURI(true), 'execution');
$this->view->title = $execution->name . $this->lang->colon . $this->lang->execution->importTask;
+ $this->view->pager = $pager;
$this->view->position[] = html::a(inlink('browse', "executionID=$toExecution"), $execution->name);
$this->view->position[] = $this->lang->execution->importTask;
- $this->view->tasks2Imported = $tasks2Imported;
+ $this->view->tasks2Imported = empty($tasks2ImportedList) ? $tasks2ImportedList : $tasks2ImportedList[$pageID - 1];
$this->view->executions = $executions;
$this->view->executionID = $execution->id;
$this->view->fromExecution = $fromExecution;
@@ -632,7 +642,7 @@ class execution extends control
$this->config->bug->search['params']['product']['values'] = array(''=>'');
}
$this->config->bug->search['params']['execution']['values'] = array(''=>'') + $executions + array('all'=>$this->lang->execution->aboveAllExecution);
- $this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs(array_keys($products));
+ $this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs(array_keys($products));
$this->config->bug->search['module'] = 'importBug';
$this->config->bug->search['params']['confirmed']['values'] = array('' => '') + $this->lang->bug->confirmedList;
@@ -2179,15 +2189,9 @@ class execution extends control
if(!empty($_POST))
{
- $this->loadModel('action');
- $changes = $this->execution->activate($executionID);
+ $this->execution->activate($executionID);
if(dao::isError()) return print(js::error(dao::getError()));
- if($this->post->comment != '' or !empty($changes))
- {
- $actionID = $this->action->create($this->objectType, $executionID, 'Activated', $this->post->comment);
- $this->action->logHistory($actionID, $changes);
- }
$this->executeHooks($executionID);
if(isonlybody() and $from == 'kanban')
{
@@ -2230,16 +2234,10 @@ class execution extends control
if(!empty($_POST))
{
- $this->loadModel('action');
$this->execution->computeBurn($executionID);
- $changes = $this->execution->close($executionID);
+ $this->execution->close($executionID);
if(dao::isError()) return print(js::error(dao::getError()));
- if($this->post->comment != '' or !empty($changes))
- {
- $actionID = $this->action->create($this->objectType, $executionID, 'Closed', $this->post->comment);
- $this->action->logHistory($actionID, $changes);
- }
$this->executeHooks($executionID);
if(isonlybody() and $from == 'kanban')
{
@@ -2890,6 +2888,7 @@ class execution extends control
$this->dao->update(TABLE_EXECUTION)->set('deleted')->eq(1)->where('id')->eq($executionID)->exec();
$this->loadModel('action')->create('execution', $executionID, 'deleted', '', ACTIONMODEL::CAN_UNDELETED);
$this->execution->updateUserView($executionID);
+ $this->loadModel('common')->syncPPEStatus($executionID);
$this->session->set('execution', '');
$message = $this->executeHooks($executionID);
diff --git a/module/execution/js/bug.js b/module/execution/js/bug.js
index ce07804c40..7a73ac2808 100644
--- a/module/execution/js/bug.js
+++ b/module/execution/js/bug.js
@@ -2,4 +2,27 @@ $(function()
{
if(browseType != 'bysearch') $('#module' + param).closest('li').addClass('active');
if($('#bugList thead th.c-title').width() < 150) $('#bugList thead th.c-title').width(150);
+
+ $('#bugList').on('change', "[name='bugIDList[]']", checkClosed);
});
+
+/**
+ * Closed bugs are not assignable.
+ *
+ * @access public
+ * @return void
+ */
+function checkClosed()
+{
+ var disabledAssigned = $('#bugList tr.checked .c-assignedTo a').length > 0 ? true : false;
+ $('#bugList tr.checked .c-assignedTo a').each(function()
+ {
+ if(!$(this).hasClass('disabled'))
+ {
+ disabledAssigned = false;
+ return false;
+ }
+ });
+
+ $('#mulAssigned').prop('disabled', disabledAssigned);
+}
diff --git a/module/execution/lang/de.php b/module/execution/lang/de.php
index 7ab7927d18..1cc9cb51bd 100644
--- a/module/execution/lang/de.php
+++ b/module/execution/lang/de.php
@@ -536,10 +536,19 @@ $lang->execution->treeLevel['task'] = 'Aufgabe anzeigen';
$lang->execution->treeLevel['story'] = 'Story anzeigen';
$lang->execution->action = new stdclass();
-$lang->execution->action->opened = '$date, created by $actor. $extra' . "\n";
-$lang->execution->action->managed = '$date, managed by $actor. $extra' . "\n";
-$lang->execution->action->edited = '$date, edited by $actor. $extra' . "\n";
-$lang->execution->action->extra = 'Linked products is %s.';
+$lang->execution->action->opened = '$date, created by $actor. $extra' . "\n";
+$lang->execution->action->managed = '$date, managed by $actor. $extra' . "\n";
+$lang->execution->action->edited = '$date, edited by $actor. $extra' . "\n";
+$lang->execution->action->extra = 'Linked products is %s.';
+$lang->execution->action->startbychildactivate = '$date, activating the sub stage sets the execution status as Ongoing.' . "\n";
+$lang->execution->action->waitbychilddelete = '$date, deleting the sub stage sets the execution status as waitting.' . "\n";
+$lang->execution->action->closebychilddelete = '$date, deleting the sub stage sets the execution status as closing.' . "\n";
+$lang->execution->action->closebychildclose = '$date, closing the sub stage sets the execution status as closing.' . "\n";
+
+$lang->execution->startbychildactivate = 'activated';
+$lang->execution->waitbychilddelete = 'stop';
+$lang->execution->closebychilddelete = 'closed';
+$lang->execution->closebychildclose = 'closed';
$lang->execution->statusColorList = array();
$lang->execution->statusColorList['wait'] = '#0991FF';
diff --git a/module/execution/lang/en.php b/module/execution/lang/en.php
index cf11af6af7..4c34595681 100644
--- a/module/execution/lang/en.php
+++ b/module/execution/lang/en.php
@@ -536,10 +536,19 @@ $lang->execution->treeLevel['task'] = 'Stories&Tasks';
$lang->execution->treeLevel['story'] = 'Only Stories';
$lang->execution->action = new stdclass();
-$lang->execution->action->opened = '$date, created by $actor. $extra' . "\n";
-$lang->execution->action->managed = '$date, managed by $actor. $extra' . "\n";
-$lang->execution->action->edited = '$date, edited by $actor. $extra' . "\n";
-$lang->execution->action->extra = 'Linked products is %s.';
+$lang->execution->action->opened = '$date, created by $actor. $extra' . "\n";
+$lang->execution->action->managed = '$date, managed by $actor. $extra' . "\n";
+$lang->execution->action->edited = '$date, edited by $actor. $extra' . "\n";
+$lang->execution->action->extra = 'Linked products is %s.';
+$lang->execution->action->startbychildactivate = '$date, activating the sub stage sets the execution status as Ongoing.' . "\n";
+$lang->execution->action->waitbychilddelete = '$date, deleting the sub stage sets the execution status as waitting.' . "\n";
+$lang->execution->action->closebychilddelete = '$date, deleting the sub stage sets the execution status as closing.' . "\n";
+$lang->execution->action->closebychildclose = '$date, closing the sub stage sets the execution status as closing.' . "\n";
+
+$lang->execution->startbychildactivate = 'activated';
+$lang->execution->waitbychilddelete = 'stop';
+$lang->execution->closebychilddelete = 'closed';
+$lang->execution->closebychildclose = 'closed';
$lang->execution->statusColorList = array();
$lang->execution->statusColorList['wait'] = '#0991FF';
diff --git a/module/execution/lang/fr.php b/module/execution/lang/fr.php
index 6dea9a32aa..3e71a37d6b 100644
--- a/module/execution/lang/fr.php
+++ b/module/execution/lang/fr.php
@@ -536,10 +536,19 @@ $lang->execution->treeLevel['task'] = 'Stories&Tâches';
$lang->execution->treeLevel['story'] = 'Seulement Stories';
$lang->execution->action = new stdclass();
-$lang->execution->action->opened = '$date, created by $actor. $extra' . "\n";
-$lang->execution->action->managed = '$date, managed by $actor. $extra' . "\n";
-$lang->execution->action->edited = '$date, edited by $actor. $extra' . "\n";
-$lang->execution->action->extra = 'Linked products is %s.';
+$lang->execution->action->opened = '$date, created by $actor. $extra' . "\n";
+$lang->execution->action->managed = '$date, managed by $actor. $extra' . "\n";
+$lang->execution->action->edited = '$date, edited by $actor. $extra' . "\n";
+$lang->execution->action->extra = 'Linked products is %s.';
+$lang->execution->action->startbychildactivate = '$date, activating the sub stage sets the execution status as Ongoing.' . "\n";
+$lang->execution->action->waitbychilddelete = '$date, deleting the sub stage sets the execution status as waitting.' . "\n";
+$lang->execution->action->closebychilddelete = '$date, deleting the sub stage sets the execution status as closing.' . "\n";
+$lang->execution->action->closebychildclose = '$date, closing the sub stage sets the execution status as closing.' . "\n";
+
+$lang->execution->startbychildactivate = 'activated';
+$lang->execution->waitbychilddelete = 'stop';
+$lang->execution->closebychilddelete = 'closed';
+$lang->execution->closebychildclose = 'closed';
$lang->execution->statusColorList = array();
$lang->execution->statusColorList['wait'] = '#0991FF';
diff --git a/module/execution/lang/zh-cn.php b/module/execution/lang/zh-cn.php
index a064ccd15c..046e868a9d 100644
--- a/module/execution/lang/zh-cn.php
+++ b/module/execution/lang/zh-cn.php
@@ -536,10 +536,19 @@ $lang->execution->treeLevel['task'] = '全部显示';
$lang->execution->treeLevel['story'] = "只看{$lang->SRCommon}";
$lang->execution->action = new stdclass();
-$lang->execution->action->opened = '$date, 由 $actor 创建。$extra' . "\n";
-$lang->execution->action->managed = '$date, 由 $actor 维护。$extra' . "\n";
-$lang->execution->action->edited = '$date, 由 $actor 编辑。$extra' . "\n";
-$lang->execution->action->extra = '相关产品为 %s。';
+$lang->execution->action->opened = '$date, 由 $actor 创建。$extra' . "\n";
+$lang->execution->action->managed = '$date, 由 $actor 维护。$extra' . "\n";
+$lang->execution->action->edited = '$date, 由 $actor 编辑。$extra' . "\n";
+$lang->execution->action->extra = '相关产品为 %s。';
+$lang->execution->action->startbychildactivate = '$date, 系统判断由于子阶段激活,将' . $lang->executionCommon . '状态置为进行中。' . "\n";
+$lang->execution->action->waitbychilddelete = '$date, 系统判断由于子阶段删除,将' . $lang->executionCommon . '状态置为未开始。' . "\n";
+$lang->execution->action->closebychilddelete = '$date, 系统判断由于子阶段删除,将' . $lang->executionCommon . '状态置为已关闭。' . "\n";
+$lang->execution->action->closebychildclose = '$date, 系统判断由于子阶段关闭,将' . $lang->executionCommon . '状态置为已关闭。' . "\n";
+
+$lang->execution->startbychildactivate = '激活了';
+$lang->execution->waitbychilddelete = '停止了';
+$lang->execution->closebychilddelete = '关闭了';
+$lang->execution->closebychildclose = '关闭了';
$lang->execution->statusColorList = array();
$lang->execution->statusColorList['wait'] = '#0991FF';
diff --git a/module/execution/model.php b/module/execution/model.php
index 98153d49c7..39756b26b9 100644
--- a/module/execution/model.php
+++ b/module/execution/model.php
@@ -1005,17 +1005,24 @@ class executionModel extends model
}
}
+ $changes = common::createChanges($oldExecution, $execution);
+ if($this->post->comment != '' or !empty($changes))
+ {
+ $this->loadModel('action');
+ $actionID = $this->action->create('execution', $executionID, 'Activated', $this->post->comment);
+ $this->action->logHistory($actionID, $changes);
+ }
+
/* Update the status of the parent stage. */
if($oldExecution->type == 'stage')
{
$parent = $this->getByID($oldExecution->parent);
- if($parent->type == 'stage' and $parent->status == 'closed')
+ if($parent->type == 'stage' and in_array($parent->status, array('closed', 'wait')))
{
$this->dao->update(TABLE_EXECUTION)->set('status')->eq('doing')->where('id')->eq($parent->id)->exec();
+ $this->loadModel('action')->create('execution', $parent->id, 'startbychildactivate');
}
}
-
- if(!dao::isError()) return common::createChanges($oldExecution, $execution);
}
/**
@@ -1058,6 +1065,15 @@ class executionModel extends model
if(!dao::isError())
{
+
+ $changes = common::createChanges($oldExecution, $execution);
+ if($this->post->comment != '' or !empty($changes))
+ {
+ $this->loadModel('action');
+ $actionID = $this->action->create('execution', $executionID, 'Closed', $this->post->comment);
+ $this->action->logHistory($actionID, $changes);
+ }
+
/* Update the status of the parent stage. */
if($oldExecution->type == 'stage')
{
@@ -1071,12 +1087,15 @@ class executionModel extends model
if($childExecution->status != 'closed') $isClosed = false;
}
- if($isClosed) $this->dao->update(TABLE_EXECUTION)->set('status')->eq('closed')->where('id')->eq($parent->id)->exec();
+ if($isClosed)
+ {
+ $this->dao->update(TABLE_EXECUTION)->set('status')->eq('closed')->where('id')->eq($parent->id)->exec();
+ $this->loadModel('action')->create('execution', $parent->id, 'closebychildclose');
+ }
}
}
$this->loadModel('score')->create('execution', 'close', $oldExecution);
- return common::createChanges($oldExecution, $execution);
}
}
@@ -1411,7 +1430,7 @@ class executionModel extends model
/**
* Get execution stat data.
-
+
* @param int $projectID
* @param string $browseType all|undone|wait|doing|suspended|closed|involved|bySearch|review
* @param int $productID
@@ -2689,7 +2708,7 @@ class executionModel extends model
$this->story->setStage($storyID);
$this->linkCases($executionID, (int)$products[$storyID], $storyID);
- $action = $executionID == $this->session->project ? 'linked2project' : 'linked2execution';
+ $action = $execution->type == 'project' ? 'linked2project' : 'linked2execution';
if($action == 'linked2execution' and $execution->type == 'kanban') $action = 'linked2kanban';
$this->action->create('story', $storyID, $action, '', $executionID);
}
diff --git a/module/execution/view/bug.html.php b/module/execution/view/bug.html.php
index 0dcf920a7a..606c7aee68 100644
--- a/module/execution/view/bug.html.php
+++ b/module/execution/view/bug.html.php
@@ -162,7 +162,7 @@
diff --git a/module/file/control.php b/module/file/control.php
index 6ce27a6fc5..36e29ae62e 100755
--- a/module/file/control.php
+++ b/module/file/control.php
@@ -130,6 +130,7 @@ class file extends control
if(!$this->file->checkPriv($file))
{
echo(js::alert($this->lang->file->accessDenied));
+ if(isonlybody()) return print(js::reload('parent.parent'));
return print(js::locate(helper::createLink('my', 'index')));
}
diff --git a/module/file/model.php b/module/file/model.php
index b4d6fa25a6..aaf8813c45 100755
--- a/module/file/model.php
+++ b/module/file/model.php
@@ -565,7 +565,7 @@ class fileModel extends model
}
elseif($objectType == 'feedback')
{
- $productID = $this->dao->findById($objectID)->from(TABLE_FEEDBACK)->fetch();
+ $productID = $this->dao->findById($objectID)->from(TABLE_FEEDBACK)->fetch('product');
$grantProducts = $this->loadModel('feedback')->getGrantProducts();
return in_array($productID, array_keys($grantProducts));
}
diff --git a/module/git/control.php b/module/git/control.php
index 3858b35fcb..102621c7b0 100644
--- a/module/git/control.php
+++ b/module/git/control.php
@@ -34,24 +34,30 @@ class git extends control
{
if(isset($_GET['repoUrl'])) $path = $this->get->repoUrl;
- $path = helper::safe64Decode($path);
- if(common::hasPriv('repo', 'diff'))
+ $path = helper::safe64Decode($path);
+ $repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab,Gogs,Gitea', 'haspriv');
+ $currentRepo = null;
+ foreach($repos as $repo)
{
- $repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab', 'haspriv');
- foreach($repos as $repo)
- {
- if(strpos($path, $repo->path) === 0)
- {
- $entry = $this->repo->encodePath(str_replace($repo->path, '', $path));
- $oldRevision = "$revision^";
- $this->locate($this->repo->createLink('diff', "repoID=$repo->id&objectID=0&entry=$entry&oldRevision=$oldRevision&revision=$revision", 'html', 'true'));
- }
- }
+ if(!empty($repo->path) and strpos($path, $repo->path) === 0) $currentRepo = $repo;
+ }
+
+ if($currentRepo and common::hasPriv('repo', 'diff'))
+ {
+ $entry = $this->repo->encodePath(str_replace($currentRepo->path, '', $path));
+ $oldRevision = "$revision^";
+ return $this->locate($this->repo->createLink('diff', "repoID=$currentRepo->id&objectID=0&entry=$entry&oldRevision=$oldRevision&revision=$revision", 'html', 'true'));
+ }
+
+ if($currentRepo)
+ {
+ $scm = $this->app->loadClass('scm');
+ $scm->setEngine($currentRepo);
}
$this->view->path = $path;
$this->view->revision = $revision;
- $this->view->diff = $this->git->diff($path, $revision);
+ $this->view->diff = $currentRepo ? $scm->diff($path, $revision) : '';
$this->display();
}
@@ -68,23 +74,28 @@ class git extends control
{
if(isset($_GET['repoUrl'])) $path = $this->get->repoUrl;
- $path = helper::safe64Decode($path);
- if(common::hasPriv('repo', 'view'))
+ $path = helper::safe64Decode($path);
+ $repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab,Gogs,Gitea', 'haspriv');
+ $currentRepo = null;
+ foreach($repos as $repo)
{
- $repos = $this->loadModel('repo')->getListBySCM('Git,Gitlab', 'haspriv');
- foreach($repos as $repo)
- {
- if(strpos($path, $repo->path) === 0)
- {
- $entry = $this->repo->encodePath(str_replace($repo->path, '', $path));
- $this->locate($this->repo->createLink('view', "repoID=$repo->id&objectID=0&entry=$entry&revision=$revision", 'html', true));
- }
- }
+ if(!empty($repo->path) and strpos($path, $repo->path) === 0) $currentRepo = $repo;
}
+ if($currentRepo and common::hasPriv('repo', 'view'))
+ {
+ $entry = $this->repo->encodePath(str_replace($currentRepo->path, '', $path));
+ return $this->locate($this->repo->createLink('view', "repoID=$currentRepo->id&objectID=0&entry=$entry&revision=$revision", 'html', true));
+ }
+
+ if($currentRepo)
+ {
+ $scm = $this->app->loadClass('scm');
+ $scm->setEngine($currentRepo);
+ }
$this->view->path = $path;
$this->view->revision = $revision;
- $this->view->code = $this->git->cat($path, $revision);
+ $this->view->code = $currentRepo ? $scm->cat($path, $revision) : '';
$this->display();
}
diff --git a/module/git/model.php b/module/git/model.php
index 231e79682f..28797cae14 100644
--- a/module/git/model.php
+++ b/module/git/model.php
@@ -128,18 +128,24 @@ class gitModel extends model
$branches = $this->repo->getBranches($repo);
$commits = $repo->commits;
- $gitlabAccountPairs = array();
+ $accountPairs = array();
if($repo->SCM == 'Gitlab')
{
- $gitlabUserList = $this->loadModel('gitlab')->apiGetUsers($repo->gitService);
- $acountIDPairs = $this->gitlab->getUserIdAccountPairs($repo->gitService);
- foreach($gitlabUserList as $gitlabUser) $gitlabAccountPairs[$gitlabUser->realname] = zget($acountIDPairs, $gitlabUser->id, '');
+ $userList = $this->loadModel('gitlab')->apiGetUsers($repo->gitService);
+ $acountIDPairs = $this->gitlab->getUserIdAccountPairs($repo->gitService);
+ foreach($userList as $gitlabUser) $accountPairs[$gitlabUser->realname] = zget($acountIDPairs, $gitlabUser->id, '');
}
elseif($repo->SCM == 'Gitea')
{
- $gitlabUserList = $this->loadModel('gitea')->apiGetUsers($repo->gitService);
- $acountIDPairs = $this->gitea->getUserAccountIdPairs($repo->gitService, 'openID,account');
- foreach($gitlabUserList as $gitlabUser) $gitlabAccountPairs[$gitlabUser->realname] = zget($acountIDPairs, $gitlabUser->id, '');
+ $userList = $this->loadModel('gitea')->apiGetUsers($repo->gitService);
+ $acountIDPairs = $this->gitea->getUserAccountIdPairs($repo->gitService, 'openID,account');
+ foreach($userList as $gitlabUser) $accountPairs[$gitlabUser->realname] = zget($acountIDPairs, $gitlabUser->id, '');
+ }
+ elseif($repo->SCM == 'Gogs')
+ {
+ $userList = $this->loadModel('gogs')->apiGetUsers($repo->gitService);
+ $acountIDPairs = $this->gogs->getUserAccountIdPairs($repo->gitService, 'openID,account');
+ foreach($userList as $gitlabUser) $accountPairs[$gitlabUser->realname] = zget($acountIDPairs, $gitlabUser->id, '');
}
/* Update code commit history. */
@@ -183,7 +189,7 @@ class gitModel extends model
' task:' . join(' ', $objects['tasks']) .
' bug:' . join(',', $objects['bugs']));
- if($lastVersion != $version) $this->repo->saveAction2PMS($objects, $log, $this->repoRoot, $repo->encoding, 'git', $gitlabAccountPairs);
+ if($lastVersion != $version) $this->repo->saveAction2PMS($objects, $log, $this->repoRoot, $repo->encoding, 'git', $accountPairs);
}
else
{
diff --git a/module/gitea/control.php b/module/gitea/control.php
index cd18b89de5..7d7f851726 100644
--- a/module/gitea/control.php
+++ b/module/gitea/control.php
@@ -141,9 +141,9 @@ class gitea extends control
{
if($confirm != 'yes') return print(js::confirm($this->lang->gitea->confirmDelete, inlink('delete', "id=$giteaID&confirm=yes")));
-
$oldGitea = $this->loadModel('pipeline')->getByID($giteaID);
$actionID = $this->pipeline->delete($giteaID, 'gitea');
+ if(!$actionID) return print(js::error($this->lang->pipeline->delError));
$gitea = $this->pipeline->getByID($giteaID);
$changes = common::createChanges($oldGitea, $gitea);
diff --git a/module/gitea/lang/de.php b/module/gitea/lang/de.php
index 5eb0f97d89..6ed177b6f3 100644
--- a/module/gitea/lang/de.php
+++ b/module/gitea/lang/de.php
@@ -1,5 +1,4 @@
gitea = new stdclass;
$lang->gitea->common = 'Gitea';
$lang->gitea->browse = 'Gitea Browse';
$lang->gitea->search = 'Search';
diff --git a/module/gitea/lang/en.php b/module/gitea/lang/en.php
index 5eb0f97d89..6ed177b6f3 100644
--- a/module/gitea/lang/en.php
+++ b/module/gitea/lang/en.php
@@ -1,5 +1,4 @@
gitea = new stdclass;
$lang->gitea->common = 'Gitea';
$lang->gitea->browse = 'Gitea Browse';
$lang->gitea->search = 'Search';
diff --git a/module/gitea/lang/fr.php b/module/gitea/lang/fr.php
index 5eb0f97d89..6ed177b6f3 100644
--- a/module/gitea/lang/fr.php
+++ b/module/gitea/lang/fr.php
@@ -1,5 +1,4 @@
gitea = new stdclass;
$lang->gitea->common = 'Gitea';
$lang->gitea->browse = 'Gitea Browse';
$lang->gitea->search = 'Search';
diff --git a/module/gitea/lang/vi.php b/module/gitea/lang/vi.php
index ad89c301d3..599193344d 100644
--- a/module/gitea/lang/vi.php
+++ b/module/gitea/lang/vi.php
@@ -1,5 +1,4 @@
gitea = new stdclass;
$lang->gitea->common = 'Gitea';
$lang->gitea->browse = 'Gitea Browse';
$lang->gitea->search = 'Search';
diff --git a/module/gitea/lang/zh-cn.php b/module/gitea/lang/zh-cn.php
index 13e4c187a5..b51208fc93 100644
--- a/module/gitea/lang/zh-cn.php
+++ b/module/gitea/lang/zh-cn.php
@@ -1,5 +1,4 @@
gitea = new stdclass;
$lang->gitea->common = 'Gitea';
$lang->gitea->browse = '浏览Gitea';
$lang->gitea->search = '搜索';
diff --git a/module/gitea/lang/zh-tw.php b/module/gitea/lang/zh-tw.php
index 7e273df350..e6af6242d3 100644
--- a/module/gitea/lang/zh-tw.php
+++ b/module/gitea/lang/zh-tw.php
@@ -1,5 +1,4 @@
gitea = new stdclass;
$lang->gitea->common = 'Gitea';
$lang->gitea->browse = '浏览Gitea';
$lang->gitea->search = '搜索';
diff --git a/module/gitlab/control.php b/module/gitlab/control.php
index 6cd8195de4..279d7db0a6 100644
--- a/module/gitlab/control.php
+++ b/module/gitlab/control.php
@@ -228,11 +228,10 @@ class gitlab extends control
{
if($confirm != 'yes') return print(js::confirm($this->lang->gitlab->confirmDelete, inlink('delete', "id=$id&confirm=yes")));
- $oldGitLab = $this->gitlab->getByID($id);
- $this->loadModel('action');
- $this->gitlab->delete(TABLE_PIPELINE, $id);
+ $oldGitLab = $this->loadModel('pipeline')->getByID($id);
+ $actionID = $this->pipeline->delete($id, 'gitlab');
+ if(!$actionID) return print(js::error($this->lang->pipeline->delError));
- $actionID = $this->dao->lastInsertID();
$gitLab = $this->gitlab->getByID($id);
$changes = common::createChanges($oldGitLab, $gitLab);
$this->action->logHistory($actionID, $changes);
@@ -722,7 +721,7 @@ class gitlab extends control
$gitlab = $this->gitlab->getByID($gitlabID);
$repos = $this->loadModel('repo')->getRepoListByClient($gitlabID);
$repoPairs = array();
- foreach($repos as $repo) $repoPairs[$repo->path] = $repo->id;
+ foreach($repos as $repo) $repoPairs[$repo->serviceProject] = $repo->id;
$this->view->gitlab = $gitlab;
$this->view->keyword = urldecode(urldecode($keyword));
@@ -966,17 +965,13 @@ class gitlab extends control
/**
* Import gitlab issue to zentaopms.
*
- * @param int $repoID
+ * @param int $gitlabID
+ * @param int $projectID
* @access public
* @return void
*/
- public function importIssue($repoID)
+ public function importIssue($gitlabID, $projectID)
{
- $repo = $this->loadModel('repo')->getRepoByID($repoID);
- $productIDList = explode(',', $repo->product);
- $gitlabID = $repo->gitService;
- $projectID = $repo->project;
-
$gitlab = $this->gitlab->getByID($gitlabID);
if($gitlab) $user = $this->gitlab->apiGetCurrentUser($gitlab->url, $gitlab->token);
if(empty($user->is_admin)) return print(js::alert($this->lang->gitlab->tokenLimit) . js::locate($this->createLink('gitlab', 'edit', array('gitlabID' => $gitlabID))));
@@ -1053,13 +1048,11 @@ class gitlab extends control
}
}
- $products = array('' => '');
- $this->loadModel("product");
- foreach($productIDList as $productID) $products[$productID] = $this->product->getByID($productID)->name;
+ $products = $this->loadModel("product")->getPairs();
$this->view->title = $this->lang->gitlab->common . $this->lang->colon . $this->lang->gitlab->importIssue;
$this->view->importable = empty($gitlabIssues) ? false : true;
- $this->view->products = $products;
+ $this->view->products = array('' => '') + $products;
$this->view->gitlabID = $gitlabID;
$this->view->gitlabProjectID = $projectID;
$this->view->objectTypes = $this->config->gitlab->objectTypes;
diff --git a/module/gitlab/lang/de.php b/module/gitlab/lang/de.php
index ef5d63cc87..f3b3b2d451 100644
--- a/module/gitlab/lang/de.php
+++ b/module/gitlab/lang/de.php
@@ -1,5 +1,4 @@
gitlab = new stdclass;
$lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = 'GitLab Browse';
$lang->gitlab->search = 'Search';
diff --git a/module/gitlab/lang/en.php b/module/gitlab/lang/en.php
index ef5d63cc87..f3b3b2d451 100644
--- a/module/gitlab/lang/en.php
+++ b/module/gitlab/lang/en.php
@@ -1,5 +1,4 @@
gitlab = new stdclass;
$lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = 'GitLab Browse';
$lang->gitlab->search = 'Search';
diff --git a/module/gitlab/lang/fr.php b/module/gitlab/lang/fr.php
index ef5d63cc87..f3b3b2d451 100644
--- a/module/gitlab/lang/fr.php
+++ b/module/gitlab/lang/fr.php
@@ -1,5 +1,4 @@
gitlab = new stdclass;
$lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = 'GitLab Browse';
$lang->gitlab->search = 'Search';
diff --git a/module/gitlab/lang/vi.php b/module/gitlab/lang/vi.php
index ef5d63cc87..f3b3b2d451 100644
--- a/module/gitlab/lang/vi.php
+++ b/module/gitlab/lang/vi.php
@@ -1,5 +1,4 @@
gitlab = new stdclass;
$lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = 'GitLab Browse';
$lang->gitlab->search = 'Search';
diff --git a/module/gitlab/lang/zh-cn.php b/module/gitlab/lang/zh-cn.php
index ef8637489c..402c550fbf 100644
--- a/module/gitlab/lang/zh-cn.php
+++ b/module/gitlab/lang/zh-cn.php
@@ -1,5 +1,4 @@
gitlab = new stdclass;
$lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = '浏览GitLab';
$lang->gitlab->search = '搜索';
diff --git a/module/gitlab/lang/zh-tw.php b/module/gitlab/lang/zh-tw.php
index cb886aeab1..3ceb69d896 100644
--- a/module/gitlab/lang/zh-tw.php
+++ b/module/gitlab/lang/zh-tw.php
@@ -1,5 +1,4 @@
gitlab = new stdclass;
$lang->gitlab->common = 'GitLab';
$lang->gitlab->browse = '瀏覽GitLab';
$lang->gitlab->search = '搜索';
diff --git a/module/gitlab/model.php b/module/gitlab/model.php
index 00c4e51721..d5ab4d0eb6 100644
--- a/module/gitlab/model.php
+++ b/module/gitlab/model.php
@@ -986,7 +986,7 @@ class gitlabModel extends model
*/
public function apiGetSingleProject($gitlabID, $projectID)
{
- $url = sprintf($this->getApiRoot($gitlabID), "/projects/$projectID");
+ $url = sprintf($this->getApiRoot($gitlabID, false), "/projects/$projectID");
return json_decode(commonModel::http($url));
}
@@ -2879,4 +2879,20 @@ class gitlabModel extends model
$html .= '';
return $html;
}
+
+ /**
+ * Get pipeline with api.
+ *
+ * @param int $gitlabID
+ * @param int $projectID
+ * @param string $branch
+ * @access public
+ * @return object|array
+ */
+ public function apiGetPipeline($gitlabID, $projectID, $branch)
+ {
+ $apiRoot = $this->getApiRoot($gitlabID);
+ $url = sprintf($apiRoot, "/projects/$projectID/pipelines") . "&ref=$branch";
+ return json_decode(commonModel::http($url));
+ }
}
diff --git a/module/gitlab/view/binduser.html.php b/module/gitlab/view/binduser.html.php
index 714b43a683..4f551b24d7 100644
--- a/module/gitlab/view/binduser.html.php
+++ b/module/gitlab/view/binduser.html.php
@@ -56,7 +56,7 @@
email;?> |
id]", $userPairs, $gitlabUser->zentaoAccount, "class='form-control select chosen'" );?> |
- zentaoAccount])):?>
+ id, $bindedUsers)):?>
zentaoAccount, '');?>
gitlab->binded;?>
diff --git a/module/gitlab/view/browseproject.html.php b/module/gitlab/view/browseproject.html.php
index 5dd1948d3f..95c299ad62 100644
--- a/module/gitlab/view/browseproject.html.php
+++ b/module/gitlab/view/browseproject.html.php
@@ -60,15 +60,19 @@
| last_activity_at, 0, 10);?> |
id", '', 'list', 'treemap', '', '', false, '', $this->lang->gitlab->browseBranch, 0, $gitlabProject->default_branch);
- echo common::buildIconButton('gitlab', 'browseTag', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'tag', '', '', false, '', $this->lang->gitlab->browseTag, 0, $gitlabProject->default_branch);
- echo common::buildIconButton('gitlab', 'manageBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'branch-lock', '', '', false, '', $this->lang->gitlab->browseBranchPriv, 0, ($gitlabProject->isMaintainer and $gitlabProject->default_branch));
- echo common::buildIconButton('gitlab', 'manageTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'tag-lock', '', '', false, '', $this->lang->gitlab->browseTagPriv, 0, ($gitlabProject->isMaintainer and $gitlabProject->default_branch));
- echo common::buildIconButton('gitlab', 'manageProjectMembers', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'team', '', '', false, '', '', 0, isset($repoPairs[$gitlabProject->id]));
- echo common::buildIconButton('gitlab', 'createWebhook', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'change', 'hiddenwin', '', false, '', '', 0, isset($repoPairs[$gitlabProject->id]));
- echo common::buildIconButton('gitlab', 'importIssue', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'link', '', '', false, '', '', 0, isset($repoPairs[$gitlabProject->id]));
- echo common::buildIconButton('gitlab', 'editProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'edit', '', '', false, '', '', 0, $gitlabProject->adminer);
- echo common::buildIconButton('gitlab', 'deleteProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'trash', 'hiddenwin', '', false, '', '', 0, $gitlabProject->adminer);
+ $hasRepoClass = isset($repoPairs[$gitlabProject->id]) ? '' : 'disabled';
+ $adminerClass = $gitlabProject->adminer ? '' : 'disabled';
+ $maintainerClass = $gitlabProject->isMaintainer ? '' : 'disabled';
+ $defaultBranchClass = $gitlabProject->adminer ? '' : 'disabled';
+ echo common::printIcon('gitlab', 'browseBranch', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'treemap', '', $defaultBranchClass, false, '', $this->lang->gitlab->browseBranch);
+ echo common::printIcon('gitlab', 'browseTag', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'tag', '', $defaultBranchClass, false, '', $this->lang->gitlab->browseTag);
+ echo common::printIcon('gitlab', 'manageBranchPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'branch-lock', '', $defaultBranchClass . ' ' . $maintainerClass, false, '', $this->lang->gitlab->browseBranchPriv);
+ echo common::printIcon('gitlab', 'manageTagPriv', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'tag-lock', '', $defaultBranchClass . ' ' . $maintainerClass, false, '', $this->lang->gitlab->browseTagPriv);
+ echo common::printIcon('gitlab', 'manageProjectMembers', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'team', '', $hasRepoClass);
+ echo common::printIcon('gitlab', 'createWebhook', 'repoID=' . zget($repoPairs, $gitlabProject->id), '', 'list', 'change', 'hiddenwin', $hasRepoClass);
+ echo common::printIcon('gitlab', 'importIssue', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'link');
+ echo common::printIcon('gitlab', 'editProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'edit', '', $adminerClass);
+ echo common::printIcon('gitlab', 'deleteProject', "gitlabID=$gitlabID&projectID=$gitlabProject->id", '', 'list', 'trash', 'hiddenwin', $adminerClass);
?>
|
diff --git a/module/gogs/config.php b/module/gogs/config.php
new file mode 100644
index 0000000000..88dddfa1f6
--- /dev/null
+++ b/module/gogs/config.php
@@ -0,0 +1,6 @@
+gogs->create = new stdclass;
+$config->gogs->create->requiredFields = 'name,url,token';
+
+$config->gogs->edit = new stdclass;
+$config->gogs->edit->requiredFields = 'name,url,token';
diff --git a/module/gogs/control.php b/module/gogs/control.php
new file mode 100644
index 0000000000..8944cc130e
--- /dev/null
+++ b/module/gogs/control.php
@@ -0,0 +1,222 @@
+
+ * @package product
+ * @version $Id: ${FILE_NAME} 5144 2022-08-01 liyuchun@easycorp.ltd $
+ * @link http://www.zentao.net
+ */
+class gogs extends control
+{
+ /**
+ * The gogs constructor.
+ * @param string $moduleName
+ * @param string $methodName
+ */
+ public function __construct($moduleName = '', $methodName = '')
+ {
+ parent::__construct($moduleName, $methodName);
+
+ /* This is essential when changing tab(menu) from gogs to repo. */
+ /* Optional: common::setMenuVars('devops', $this->session->repoID); */
+ $this->loadModel('ci')->setMenu();
+ }
+
+ /**
+ * Browse gogs.
+ *
+ * @param string $orderBy
+ * @param int $recTotal
+ * @param int $recPerPage
+ * @param int $pageID
+ * @access public
+ * @return void
+ */
+ public function browse($orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
+ {
+
+ $this->app->loadClass('pager', $static = true);
+ $pager = new pager($recTotal, $recPerPage, $pageID);
+
+ /* Admin user don't need bind. */
+ $gogsList = $this->gogs->getList($orderBy, $pager);
+ $myGogses = $this->gogs->getGogsListByAccount();
+ foreach($gogsList as $gogs)
+ {
+ $gogs->isBindUser = true;
+ if(!$this->app->user->admin and !isset($myGogses[$gogs->id])) $gogs->isBindUser = false;
+ }
+
+ $this->view->title = $this->lang->gogs->common . $this->lang->colon . $this->lang->gogs->browse;
+ $this->view->gogsList = $gogsList;
+ $this->view->orderBy = $orderBy;
+ $this->view->pager = $pager;
+
+ $this->display();
+ }
+
+ /**
+ * Create a gogs.
+ *
+ * @access public
+ * @return void
+ */
+ public function create()
+ {
+ if($_POST)
+ {
+ $this->checkToken();
+ $gogsID = $this->gogs->create();
+
+ if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
+ $actionID = $this->loadModel('action')->create('gogs', $gogsID, 'created');
+ return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')));
+ }
+
+ $this->view->title = $this->lang->gogs->common . $this->lang->colon . $this->lang->gogs->lblCreate;
+
+ $this->display();
+ }
+
+ /**
+ * View a gogs.
+ * @param int $gogsID
+ * @access public
+ * @return void
+ */
+ public function view($gogsID)
+ {
+ $gogs = $this->gogs->getByID($gogsID);
+
+ $this->view->title = $this->lang->gogs->common . $this->lang->colon . $this->lang->gogs->view;
+ $this->view->gogs = $gogs;
+ $this->view->users = $this->loadModel('user')->getPairs('noclosed');
+ $this->view->actions = $this->loadModel('action')->getList('gogs', $gogsID);
+ $this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('pipeline', $gogsID);
+ $this->display();
+ }
+
+ /**
+ * Edit a gogs.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return void
+ */
+ public function edit($gogsID)
+ {
+ $oldGogs = $this->gogs->getByID($gogsID);
+
+ if($_POST)
+ {
+ $this->checkToken();
+ $this->gogs->update($gogsID);
+ $gogs = $this->gogs->getByID($gogsID);
+ if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
+
+ $this->loadModel('action');
+ $actionID = $this->action->create('gogs', $gogsID, 'edited');
+ $changes = common::createChanges($oldGogs, $gogs);
+ $this->action->logHistory($actionID, $changes);
+ return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')));
+ }
+
+ $this->view->title = $this->lang->gogs->common . $this->lang->colon . $this->lang->gogs->edit;
+ $this->view->gogs = $oldGogs;
+
+ $this->display();
+ }
+
+ /**
+ * Delete a gogs.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return void
+ */
+ public function delete($gogsID, $confirm = 'no')
+ {
+ if($confirm != 'yes') return print(js::confirm($this->lang->gogs->confirmDelete, inlink('delete', "id=$gogsID&confirm=yes")));
+
+ $oldGogs = $this->loadModel('pipeline')->getByID($gogsID);
+ $actionID = $this->pipeline->delete($gogsID, 'gogs');
+ if(!$actionID) return print(js::error($this->lang->pipeline->delError));
+
+ $gogs = $this->pipeline->getByID($gogsID);
+ $changes = common::createChanges($oldGogs, $gogs);
+ $this->loadModel('action')->logHistory($actionID, $changes);
+ return print(js::reload('parent'));
+ }
+
+ /**
+ * Check post token has admin permissions.
+ *
+ * @access protected
+ * @return void
+ */
+ protected function checkToken()
+ {
+ $gogs = fixer::input('post')->trim('url,token')->get();
+ $this->dao->update('gogs')->data($gogs)->batchCheck($this->config->gogs->create->requiredFields, 'notempty');
+ if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
+
+ $result = $this->gogs->checkTokenAccess($gogs->url, $gogs->token);
+
+ if($result === false) return $this->send(array('result' => 'fail', 'message' => array('url' => array($this->lang->gogs->hostError))));
+ if(!$result) return $this->send(array('result' => 'fail', 'message' => array('token' => array($this->lang->gogs->tokenLimit))));
+
+ return true;
+ }
+
+ /**
+ * Bind gogs user to zentao users.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return void
+ */
+ public function bindUser($gogsID)
+ {
+ $zentaoUsers = $this->dao->select('account,email,realname')->from(TABLE_USER)->fetchAll('account');
+ $userPairs = $this->loadModel('user')->getPairs('noclosed|noletter');
+
+ if($_POST)
+ {
+ $this->gogs->bindUser($gogsID);
+ if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
+ return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->server->http_referer));
+ }
+
+ $this->view->title = $this->lang->gogs->bindUser;
+ $this->view->userPairs = $userPairs;
+ $this->view->gogsUsers = $this->gogs->apiGetUsers($gogsID);
+ $this->view->bindedUsers = $this->gogs->getUserAccountIdPairs($gogsID);
+ $this->view->matchedResult = $this->gogs->getMatchedUsers($gogsID, $this->view->gogsUsers, $zentaoUsers);
+ $this->display();
+ }
+
+ /**
+ * Ajax getProjectBranches
+ *
+ * @param int $gogsID
+ * @param string $project
+ * @access public
+ * @return void
+ */
+ public function ajaxGetProjectBranches($gogsID, $project)
+ {
+ if(!$gogsID or !$project) return $this->send(array('message' => array()));
+
+ $project = urldecode(base64_decode($project));
+ $branches = $this->gogs->apiGetBranches($gogsID, $project);
+ $options = "
";
+ foreach($branches as $branch)
+ {
+ $options .= "
";
+ }
+ $this->send($options);
+ }
+}
diff --git a/module/gogs/css/browse.css b/module/gogs/css/browse.css
new file mode 100644
index 0000000000..cb15b6808d
--- /dev/null
+++ b/module/gogs/css/browse.css
@@ -0,0 +1,2 @@
+.c-id {width: 60px;}
+.c-name {width: 200px;}
diff --git a/module/gogs/css/common.css b/module/gogs/css/common.css
new file mode 100644
index 0000000000..ad50c2a1d2
--- /dev/null
+++ b/module/gogs/css/common.css
@@ -0,0 +1,2 @@
+#publicTip {padding-left: 10px;}
+.table-form>tbody>tr>th {width: 110px;}
diff --git a/module/gogs/lang/de.php b/module/gogs/lang/de.php
new file mode 100644
index 0000000000..4f884b7518
--- /dev/null
+++ b/module/gogs/lang/de.php
@@ -0,0 +1,35 @@
+gogs->common = 'Gogs';
+$lang->gogs->browse = 'Gogs Browse';
+$lang->gogs->search = 'Search';
+$lang->gogs->create = 'Create Gogs';
+$lang->gogs->edit = 'Edit Gogs';
+$lang->gogs->view = 'View Gogs';
+$lang->gogs->delete = 'Delete Gogs';
+$lang->gogs->confirmDelete = 'Do you want to delete this Gogs server?';
+$lang->gogs->bindUser = 'Bind User';
+$lang->gogs->gogsAvatar = 'Avatar';
+$lang->gogs->gogsAccount = 'Gogs Account';
+$lang->gogs->gogsEmail = 'Email';
+$lang->gogs->zentaoAccount = 'Zentao Account';
+$lang->gogs->bindingStatus = 'Binding Status';
+$lang->gogs->notBind = 'Not bind';
+$lang->gogs->binded = 'Binded';
+$lang->gogs->bindDynamic = '%s and Zentao user %s';
+
+$lang->gogs->browseAction = 'Gogs List';
+$lang->gogs->deleteAction = 'Delete Gogs';
+
+$lang->gogs->id = 'ID';
+$lang->gogs->name = "Server Name";
+$lang->gogs->url = 'Server URL';
+$lang->gogs->token = 'Token';
+
+$lang->gogs->tokenLimit = "The current token has no admin privilege. Please regenerate one with root user in Gogs.";
+$lang->gogs->hostError = "So the current Gogs server address is invalid, please confirm that the current server can be accessed and try again.";
+$lang->gogs->bindUserError = "Can not bind users repeatedly %s";
+
+$lang->gogs->server = "Server List";
+$lang->gogs->lblCreate = 'Create Gogs Server';
+$lang->gogs->emptyError = " cannot be empty";
+$lang->gogs->createSuccess = "Create success";
diff --git a/module/gogs/lang/en.php b/module/gogs/lang/en.php
new file mode 100644
index 0000000000..4f884b7518
--- /dev/null
+++ b/module/gogs/lang/en.php
@@ -0,0 +1,35 @@
+gogs->common = 'Gogs';
+$lang->gogs->browse = 'Gogs Browse';
+$lang->gogs->search = 'Search';
+$lang->gogs->create = 'Create Gogs';
+$lang->gogs->edit = 'Edit Gogs';
+$lang->gogs->view = 'View Gogs';
+$lang->gogs->delete = 'Delete Gogs';
+$lang->gogs->confirmDelete = 'Do you want to delete this Gogs server?';
+$lang->gogs->bindUser = 'Bind User';
+$lang->gogs->gogsAvatar = 'Avatar';
+$lang->gogs->gogsAccount = 'Gogs Account';
+$lang->gogs->gogsEmail = 'Email';
+$lang->gogs->zentaoAccount = 'Zentao Account';
+$lang->gogs->bindingStatus = 'Binding Status';
+$lang->gogs->notBind = 'Not bind';
+$lang->gogs->binded = 'Binded';
+$lang->gogs->bindDynamic = '%s and Zentao user %s';
+
+$lang->gogs->browseAction = 'Gogs List';
+$lang->gogs->deleteAction = 'Delete Gogs';
+
+$lang->gogs->id = 'ID';
+$lang->gogs->name = "Server Name";
+$lang->gogs->url = 'Server URL';
+$lang->gogs->token = 'Token';
+
+$lang->gogs->tokenLimit = "The current token has no admin privilege. Please regenerate one with root user in Gogs.";
+$lang->gogs->hostError = "So the current Gogs server address is invalid, please confirm that the current server can be accessed and try again.";
+$lang->gogs->bindUserError = "Can not bind users repeatedly %s";
+
+$lang->gogs->server = "Server List";
+$lang->gogs->lblCreate = 'Create Gogs Server';
+$lang->gogs->emptyError = " cannot be empty";
+$lang->gogs->createSuccess = "Create success";
diff --git a/module/gogs/lang/fr.php b/module/gogs/lang/fr.php
new file mode 100644
index 0000000000..4f884b7518
--- /dev/null
+++ b/module/gogs/lang/fr.php
@@ -0,0 +1,35 @@
+gogs->common = 'Gogs';
+$lang->gogs->browse = 'Gogs Browse';
+$lang->gogs->search = 'Search';
+$lang->gogs->create = 'Create Gogs';
+$lang->gogs->edit = 'Edit Gogs';
+$lang->gogs->view = 'View Gogs';
+$lang->gogs->delete = 'Delete Gogs';
+$lang->gogs->confirmDelete = 'Do you want to delete this Gogs server?';
+$lang->gogs->bindUser = 'Bind User';
+$lang->gogs->gogsAvatar = 'Avatar';
+$lang->gogs->gogsAccount = 'Gogs Account';
+$lang->gogs->gogsEmail = 'Email';
+$lang->gogs->zentaoAccount = 'Zentao Account';
+$lang->gogs->bindingStatus = 'Binding Status';
+$lang->gogs->notBind = 'Not bind';
+$lang->gogs->binded = 'Binded';
+$lang->gogs->bindDynamic = '%s and Zentao user %s';
+
+$lang->gogs->browseAction = 'Gogs List';
+$lang->gogs->deleteAction = 'Delete Gogs';
+
+$lang->gogs->id = 'ID';
+$lang->gogs->name = "Server Name";
+$lang->gogs->url = 'Server URL';
+$lang->gogs->token = 'Token';
+
+$lang->gogs->tokenLimit = "The current token has no admin privilege. Please regenerate one with root user in Gogs.";
+$lang->gogs->hostError = "So the current Gogs server address is invalid, please confirm that the current server can be accessed and try again.";
+$lang->gogs->bindUserError = "Can not bind users repeatedly %s";
+
+$lang->gogs->server = "Server List";
+$lang->gogs->lblCreate = 'Create Gogs Server';
+$lang->gogs->emptyError = " cannot be empty";
+$lang->gogs->createSuccess = "Create success";
diff --git a/module/gogs/lang/vi.php b/module/gogs/lang/vi.php
new file mode 100644
index 0000000000..e59bfec93d
--- /dev/null
+++ b/module/gogs/lang/vi.php
@@ -0,0 +1,35 @@
+gogs->common = 'Gogs';
+$lang->gogs->browse = 'Gogs Browse';
+$lang->gogs->search = 'Search';
+$lang->gogs->create = 'Create Gogs';
+$lang->gogs->edit = 'Edit Gogs';
+$lang->gogs->view = 'View Gogs';
+$lang->gogs->delete = 'Delete Gogs';
+$lang->gogs->confirmDelete = 'Do you want to delete this Gogs server?';
+$lang->gogs->gogsAvatar = 'Avatar';
+$lang->gogs->bindUser = 'Bind User';
+$lang->gogs->gogsEmail = 'Email';
+$lang->gogs->gogsAccount = 'Gogs Account';
+$lang->gogs->zentaoAccount = 'Zentao Account';
+$lang->gogs->bindingStatus = 'Binding Status';
+$lang->gogs->notBind = 'Not bind';
+$lang->gogs->binded = 'Binded';
+$lang->gogs->bindDynamic = '%s and Zentao user %s';
+
+$lang->gogs->browseAction = 'Gogs List';
+$lang->gogs->deleteAction = 'Delete Gogs';
+
+$lang->gogs->id = 'ID';
+$lang->gogs->name = "Server Name";
+$lang->gogs->url = 'Server URL';
+$lang->gogs->token = 'Token';
+
+$lang->gogs->tokenLimit = "The current token has no admin privilege. Please regenerate one with root user in Gogs.";
+$lang->gogs->hostError = "So the current Gogs server address is invalid, please confirm that the current server can be accessed and try again.";
+$lang->gogs->bindUserError = "Can not bind users repeatedly %s";
+
+$lang->gogs->server = "Server List";
+$lang->gogs->lblCreate = 'Create Gogs Server';
+$lang->gogs->emptyError = " cannot be empty";
+$lang->gogs->createSuccess = "Create success";
diff --git a/module/gogs/lang/zh-cn.php b/module/gogs/lang/zh-cn.php
new file mode 100644
index 0000000000..a21dc80ba6
--- /dev/null
+++ b/module/gogs/lang/zh-cn.php
@@ -0,0 +1,35 @@
+gogs->common = 'Gogs';
+$lang->gogs->browse = '浏览Gogs';
+$lang->gogs->search = '搜索';
+$lang->gogs->create = '添加Gogs';
+$lang->gogs->edit = '编辑Gogs';
+$lang->gogs->view = '查看Gogs';
+$lang->gogs->delete = '删除Gogs';
+$lang->gogs->confirmDelete = '确认删除该Gogs吗?';
+$lang->gogs->bindUser = '绑定用户';
+$lang->gogs->gogsAvatar = '头像';
+$lang->gogs->gogsAccount = 'Gogs用户';
+$lang->gogs->gogsEmail = '邮箱';
+$lang->gogs->zentaoAccount = '禅道用户';
+$lang->gogs->bindingStatus = '绑定状态';
+$lang->gogs->notBind = '未绑定';
+$lang->gogs->binded = '已绑定';
+$lang->gogs->bindDynamic = '%s与禅道用户%s';
+
+$lang->gogs->browseAction = 'Gogs列表';
+$lang->gogs->deleteAction = '删除Gogs';
+
+$lang->gogs->id = 'ID';
+$lang->gogs->name = "服务器名称";
+$lang->gogs->url = '服务器地址';
+$lang->gogs->token = 'Token';
+
+$lang->gogs->tokenLimit = "Gogs Token权限不足。";
+$lang->gogs->hostError = "当前Gogs服务器地址无效,请确认当前服务器可被访问";
+$lang->gogs->bindUserError = "不能重复绑定用户 %s";
+
+$lang->gogs->server = "服务器列表";
+$lang->gogs->lblCreate = '添加Gogs服务器';
+$lang->gogs->emptyError = "不能为空";
+$lang->gogs->createSuccess = "创建成功";
diff --git a/module/gogs/lang/zh-tw.php b/module/gogs/lang/zh-tw.php
new file mode 100644
index 0000000000..ee8ef6470c
--- /dev/null
+++ b/module/gogs/lang/zh-tw.php
@@ -0,0 +1,32 @@
+gogs->common = 'Gogs';
+$lang->gogs->browse = '浏览Gogs';
+$lang->gogs->search = '搜索';
+$lang->gogs->create = '添加Gogs';
+$lang->gogs->edit = '编辑Gogs';
+$lang->gogs->view = '查看Gogs';
+$lang->gogs->delete = '删除Gogs';
+$lang->gogs->confirmDelete = '确认删除该Gogs吗?';
+$lang->gogs->bindUser = '绑定用户';
+$lang->gogs->gogsAccount = 'Gogs用户';
+$lang->gogs->zentaoAccount = '禅道用户';
+$lang->gogs->bindingStatus = '绑定状态';
+$lang->gogs->notBind = '未绑定';
+$lang->gogs->binded = '已绑定';
+$lang->gogs->bindDynamic = '%s与禅道用户%s';
+
+$lang->gogs->browseAction = 'Gogs列表';
+$lang->gogs->deleteAction = '删除Gogs';
+
+$lang->gogs->id = 'ID';
+$lang->gogs->name = "服务器名称";
+$lang->gogs->url = '服务器地址';
+$lang->gogs->token = 'Token';
+
+$lang->gogs->tokenLimit = "Gogs Token权限不足。";
+$lang->gogs->hostError = "当前Gogs服务器地址无效,请确认当前服务器可被访问";
+
+$lang->gogs->server = "服务器列表";
+$lang->gogs->lblCreate = '添加Gogs服务器';
+$lang->gogs->emptyError = "不能为空";
+$lang->gogs->createSuccess = "创建成功";
diff --git a/module/gogs/model.php b/module/gogs/model.php
new file mode 100644
index 0000000000..52d17580cb
--- /dev/null
+++ b/module/gogs/model.php
@@ -0,0 +1,583 @@
+
+ * @package product
+ * @version $Id: $
+ * @link http://www.zentao.net
+ */
+
+class gogsModel extends model
+{
+ /**
+ * Get a gogs by id.
+ *
+ * @param int $id
+ * @access public
+ * @return object
+ */
+ public function getByID($id)
+ {
+ return $this->loadModel('pipeline')->getByID($id);
+ }
+
+ /**
+ * Get gogs list.
+ *
+ * @param string $orderBy
+ * @param object $pager
+ * @access public
+ * @return array
+ */
+ public function getList($orderBy = 'id_desc', $pager = null)
+ {
+ $gogsList = $this->loadModel('pipeline')->getList('gogs', $orderBy, $pager);
+
+ return $gogsList;
+ }
+
+ /**
+ * Get gogs pairs.
+ *
+ * @access public
+ * @return array
+ */
+ public function getPairs()
+ {
+ return $this->loadModel('pipeline')->getPairs('gogs');
+ }
+
+ /**
+ * Get gogs api base url by gogs id.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return string
+ */
+ public function getApiRoot($gogsID)
+ {
+ $gogs = $this->getByID($gogsID);
+ if(!$gogs) return '';
+
+ return rtrim($gogs->url, '/') . '/api/v1%s' . "?token={$gogs->token}";
+ }
+
+ /**
+ * Create a gogs.
+ *
+ * @access public
+ * @return bool
+ */
+ public function create()
+ {
+ return $this->loadModel('pipeline')->create('gogs');
+ }
+
+ /**
+ * Update a gogs.
+ *
+ * @param int $id
+ * @access public
+ * @return bool
+ */
+ public function update($id)
+ {
+ return $this->loadModel('pipeline')->update($id);
+ }
+
+ /**
+ * Bind users.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return array
+ */
+ public function bindUser($gogsID)
+ {
+ $userPairs = $this->loadModel('user')->getPairs('noclosed|noletter');
+ $users = $this->post->zentaoUsers;
+ $gogsNames = $this->post->gogsUserNames;
+ $accountList = array();
+ $repeatUsers = array();
+ foreach($users as $openID => $user)
+ {
+ if(empty($user)) continue;
+ if(isset($accountList[$user])) $repeatUsers[] = zget($userPairs, $user);
+ $accountList[$user] = $openID;
+ }
+
+ if(count($repeatUsers))
+ {
+ dao::$errors[] = sprintf($this->lang->gogs->bindUserError, join(',', $repeatUsers));
+ return false;
+ }
+
+ $user = new stdclass;
+ $user->providerID = $gogsID;
+ $user->providerType = 'gogs';
+
+ $oldUsers = $this->dao->select('*')->from(TABLE_OAUTH)->where('providerType')->eq($user->providerType)->andWhere('providerID')->eq($user->providerID)->fetchAll('openID');
+ foreach($users as $openID => $account)
+ {
+ $existAccount = isset($oldUsers[$openID]) ? $oldUsers[$openID] : '';
+
+ if($existAccount and $existAccount->account != $account)
+ {
+ $this->dao->delete()
+ ->from(TABLE_OAUTH)
+ ->where('openID')->eq($openID)
+ ->andWhere('providerType')->eq($user->providerType)
+ ->andWhere('providerID')->eq($user->providerID)
+ ->exec();
+ $this->loadModel('action')->create('gogsuser', $gogsID, 'unbind', '', sprintf($this->lang->gogs->bindDynamic, $gogsNames[$openID], $zentaoUsers[$existAccount->account]->realname));
+ }
+ if(!$existAccount or $existAccount->account != $account)
+ {
+ if(!$account) continue;
+ $user->account = $account;
+ $user->openID = $openID;
+ $this->dao->insert(TABLE_OAUTH)->data($user)->exec();
+ $this->loadModel('action')->create('gogsuser', $gogsID, 'bind', '', sprintf($this->lang->gogs->bindDynamic, $gogsNames[$openID], $zentaoUsers[$account]->realname));
+ }
+ }
+ }
+
+ /**
+ * Api error handling.
+ *
+ * @param object $response
+ * @access public
+ * @return bool
+ */
+ public function apiErrorHandling($response)
+ {
+ if(!empty($response->error))
+ {
+ dao::$errors[] = $response->error;
+ return false;
+ }
+ if(!empty($response->message))
+ {
+ if(is_string($response->message))
+ {
+ $errorKey = array_search($response->message, $this->lang->gogs->apiError);
+ dao::$errors[] = $errorKey === false ? $response->message : zget($this->lang->gogs->errorLang, $errorKey);
+ }
+ else
+ {
+ foreach($response->message as $field => $fieldErrors)
+ {
+ if(is_string($fieldErrors))
+ {
+ $errorKey = array_search($fieldErrors, $this->lang->gogs->apiError);
+ if($fieldErrors) dao::$errors[$field][] = $errorKey === false ? $fieldErrors : zget($this->lang->gogs->errorLang, $errorKey);
+ }
+ else
+ {
+ foreach($fieldErrors as $error)
+ {
+ $errorKey = array_search($error, $this->lang->gogs->apiError);
+ if($error) dao::$errors[$field][] = $errorKey === false ? $error : zget($this->lang->gogs->errorLang, $errorKey);
+ }
+ }
+ }
+ }
+ }
+
+ if(!$response) dao::$errors[] = false;
+ return false;
+ }
+
+ /**
+ * Check token access.
+ *
+ * @param string $url
+ * @param string $token
+ * @access public
+ * @return void
+ */
+ public function checkTokenAccess($url = '', $token = '')
+ {
+ $apiRoot = rtrim($url, '/') . '/api/v1%s' . "?token={$token}";
+ $url = sprintf($apiRoot, "/user");
+ $httpData = commonModel::httpWithHeader($url);
+ $user = json_decode($httpData['body']);
+ if(empty($httpData['header'])) return false;
+ if(empty($user)) return null;
+
+ /* Check whether the token belongs to the administrator by edit user. */
+ $editUserUrl = sprintf($apiRoot, "/admin/users/" . $user->username);
+ $data = new stdclass();
+ $data->login_name = $user->login;
+ $data->email = $user->email;
+
+ $result = commonModel::http($editUserUrl, $data, array(), array(), 'data', 'PATCH');
+ $user = json_decode($result);
+ if(empty($user)) return null;
+
+ return true;
+ }
+
+ /**
+ * Get Gogs id list by user account.
+ *
+ * @param string $account
+ * @access public
+ * @return array
+ */
+ public function getGogsListByAccount($account = '')
+ {
+ if(!$account) $account = $this->app->user->account;
+
+ return $this->dao->select('providerID,openID')->from(TABLE_OAUTH)
+ ->where('providerType')->eq('gogs')
+ ->andWhere('account')->eq($account)
+ ->fetchPairs('providerID');
+ }
+
+ /**
+ * Get zentao account gogs user id pairs of one gogs.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return array
+ */
+ public function getUserAccountIdPairs($gogsID, $fields = 'account,openID')
+ {
+ return $this->dao->select($fields)->from(TABLE_OAUTH)
+ ->where('providerType')->eq('gogs')
+ ->andWhere('providerID')->eq($gogsID)
+ ->fetchPairs();
+ }
+
+ /**
+ * Get gogs user id by zentao account.
+ *
+ * @param int $gogsID
+ * @param string $zentaoAccount
+ * @access public
+ * @return array
+ */
+ public function getUserIDByZentaoAccount($gogsID, $zentaoAccount)
+ {
+ return $this->dao->select('openID')->from(TABLE_OAUTH)
+ ->where('providerType')->eq('gogs')
+ ->andWhere('providerID')->eq($gogsID)
+ ->andWhere('account')->eq($zentaoAccount)
+ ->fetch('openID');
+ }
+
+ /**
+ * Get matched gogs users.
+ *
+ * @param int $gogsID
+ * @param array $gogsUsers
+ * @param array $zentaoUsers
+ * @access public
+ * @return array
+ */
+ public function getMatchedUsers($gogsID, $gogsUsers, $zentaoUsers)
+ {
+ $matches = new stdclass;
+ foreach($gogsUsers as $gogsUser)
+ {
+ foreach($zentaoUsers as $zentaoUser)
+ {
+ if($gogsUser->account == $zentaoUser->account) $matches->accounts[$gogsUser->account][] = $zentaoUser->account;
+ if($gogsUser->realname == $zentaoUser->realname) $matches->names[$gogsUser->realname][] = $zentaoUser->account;
+ if($gogsUser->email == $zentaoUser->email) $matches->emails[$gogsUser->email][] = $zentaoUser->account;
+ }
+ }
+
+ $bindedUsers = $this->getUserAccountIdPairs($gogsID, 'openID,account');
+ $matchedUsers = array();
+ foreach($gogsUsers as $gogsUser)
+ {
+ if(isset($bindedUsers[$gogsUser->account]))
+ {
+ $gogsUser->zentaoAccount = $bindedUsers[$gogsUser->account];
+ $matchedUsers[] = $gogsUser;
+ continue;
+ }
+
+ $matchedZentaoUsers = array();
+ if(isset($matches->accounts[$gogsUser->account])) $matchedZentaoUsers = array_merge($matchedZentaoUsers, $matches->accounts[$gogsUser->account]);
+ if(isset($matches->emails[$gogsUser->email])) $matchedZentaoUsers = array_merge($matchedZentaoUsers, $matches->emails[$gogsUser->email]);
+ if(isset($matches->names[$gogsUser->realname])) $matchedZentaoUsers = array_merge($matchedZentaoUsers, $matches->names[$gogsUser->realname]);
+
+ $matchedZentaoUsers = array_unique($matchedZentaoUsers);
+ if(count($matchedZentaoUsers) == 1)
+ {
+ $gogsUser->zentaoAccount = current($matchedZentaoUsers);
+ $matchedUsers[] = $gogsUser;
+ }
+ }
+
+ return $matchedUsers;
+ }
+
+ /**
+ * Get project by api.
+ *
+ * @param int $gogsID
+ * @param int $projectID
+ * @access public
+ * @return void
+ */
+ public function apiGetSingleProject($gogsID, $projectID)
+ {
+ $apiRoot = $this->getApiRoot($gogsID);
+ if(!$apiRoot) return array();
+
+ $url = sprintf($apiRoot, "/repos/$projectID");
+ $project = json_decode(commonModel::http($url));
+ if(isset($project->name))
+ {
+ $project->name_with_namespace = $project->full_name;
+ $project->path_with_namespace = $project->full_name;
+ $project->http_url_to_repo = $project->html_url;
+ $project->name_with_namespace = $project->full_name;
+
+ $gogs = $this->getByID($gogsID);
+ $oauth = "oauth2:{$gogs->token}@";
+ $project->tokenCloneUrl = preg_replace('/(http(s)?:\/\/)/', "\$1$oauth", $project->html_url);
+ }
+
+ return $project;
+ }
+
+ /**
+ * Get projects by api.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return array
+ */
+ public function apiGetProjects($gogsID)
+ {
+ $apiRoot = $this->getApiRoot($gogsID);
+ if(!$apiRoot) return array();
+
+ $user = $this->apiGetAdminer($gogsID);
+ if(!$user) return array();
+
+ $url = sprintf($apiRoot, "/users/{$user->username}/repos");
+ $allResults = array();
+ for($page = 1; true; $page++)
+ {
+ $results = json_decode(commonModel::http($url . "&page={$page}&limit=50"));
+ if(!is_array($results)) break;
+ if(!empty($results)) $allResults = array_merge($allResults, $results);
+ if(count($results) < 50) break;
+ }
+
+ return $allResults;
+ }
+
+ /**
+ * Api get adminer.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return void
+ */
+ public function apiGetAdminer($gogsID)
+ {
+ $apiRoot = $this->getApiRoot($gogsID);
+ if(!$apiRoot) return array();
+
+ $url = sprintf($apiRoot, "/user");
+ $user = json_decode(commonModel::http($url));
+
+ return isset($user->username) ? $user : null;
+ }
+
+ /**
+ * Get gogs user list.
+ *
+ * @param int $gogsID
+ * @param bool $onlyLinked
+ * @access public
+ * @return array
+ */
+ public function apiGetUsers($gogsID, $onlyLinked = false)
+ {
+ $response = array();
+ $apiRoot = $this->getApiRoot($gogsID);
+
+ for($page = 1; true; $page++)
+ {
+ $url = sprintf($apiRoot, "/admin/users") . "&page={$page}&limit=20";
+ $result = json_decode(commonModel::http($url));
+ if(empty($result->data)) break;
+ $response = array_merge($response, $result->data);
+ $page += 1;
+ }
+
+ if(empty($response)) return array();
+
+ /* Get linked users. */
+ $linkedUsers = array();
+ if($onlyLinked) $linkedUsers = $this->getUserAccountIdPairs($gogsID, 'openID,account');
+
+ $users = array();
+ foreach($response as $gogsUser)
+ {
+ if($onlyLinked and !isset($linkedUsers[$gogsUser->id])) continue;
+
+ $user = new stdclass;
+ $user->id = $gogsUser->id;
+ $user->realname = $gogsUser->full_name ? $gogsUser->full_name : $gogsUser->username;
+ $user->account = $gogsUser->username;
+ $user->email = zget($gogsUser, 'email', '');
+ $user->avatar = $gogsUser->avatar_url;
+ $user->createdAt = zget($gogsUser, 'created', '');
+ $user->lastActivityOn = zget($gogsUser, 'login', '');
+
+ $users[] = $user;
+ }
+
+ return $users;
+ }
+
+ /**
+ * Get project repository branches by api.
+ *
+ * @param int $gogsID
+ * @param string $project
+ * @access public
+ * @return object
+ */
+ public function apiGetBranches($gogsID, $project, $pager = null)
+ {
+ $url = sprintf($this->getApiRoot($gogsID), "/repos/{$project}/branches");
+ $allResults = array();
+ for($page = 1; true; $page++)
+ {
+ $results = json_decode(commonModel::http($url . "&page={$page}&limit=50"));
+ if(!is_array($results)) break;
+ if(!empty($results)) $allResults = array_merge($allResults, $results);
+ if(count($results) < 100) break;
+ }
+
+ return $allResults;
+ }
+
+ /**
+ * Get upstream project by API.
+ *
+ * @param int $gogsID
+ * @param string $project
+ * @access public
+ * @return void
+ */
+ public function apiGetUpstream($gogsID, $project)
+ {
+ $currentProject = $this->apiGetSingleProject($gogsID, $project);
+ if(isset($currentProject->parent->full_name)) return $currentProject->parent->full_name;
+ return array();
+ }
+
+ /**
+ * Get branches.
+ *
+ * @param int $gogsID
+ * @param string $project
+ * @access public
+ * @return array
+ */
+ public function getBranches($gogsID, $project)
+ {
+ $rawBranches = $this->apiGetBranches($gogsID, $project);
+
+ $branches = array();
+ foreach($rawBranches as $branch) $branches[] = $branch->name;
+
+ return $branches;
+ }
+
+ /**
+ * Get gogs user id and realname pairs of one gogs.
+ *
+ * @param int $gogsID
+ * @access public
+ * @return array
+ */
+ public function getUserIdRealnamePairs($gogsID)
+ {
+ return $this->dao->select('oauth.openID as openID,user.realname as realname')
+ ->from(TABLE_OAUTH)->alias('oauth')
+ ->leftJoin(TABLE_USER)->alias('user')
+ ->on("oauth.account = user.account")
+ ->where('providerType')->eq('gogs')
+ ->andWhere('providerID')->eq($gogsID)
+ ->fetchPairs();
+ }
+
+ /**
+ * Get single branch by API.
+ *
+ * @param int $gogsID
+ * @param string $project
+ * @param string $branchName
+ * @access public
+ * @return object
+ */
+ public function apiGetSingleBranch($gogsID, $project, $branchName)
+ {
+ $url = sprintf($this->getApiRoot($gogsID), "/repos/$project/branches/$branchName");
+ $branch = json_decode(commonModel::http($url));
+ if($branch)
+ {
+ $gogs = $this->getByID($gogsID);
+ $branch->web_url = "{$gogs->url}/$project/src/$branchName";
+ }
+
+ return $branch;
+ }
+
+ /**
+ * Get protect branches of one project.
+ *
+ * @param int $gogsID
+ * @param string $project
+ * @param string $keyword
+ * @access public
+ * @return array
+ */
+ public function apiGetBranchPrivs($gogsID, $project, $keyword = '')
+ {
+ $keyword = urlencode($keyword);
+ $url = sprintf($this->getApiRoot($gogsID), "/repos/$project/branch_protections");
+ $branches = json_decode(commonModel::http($url));
+
+ if(!is_array($branches)) return array();
+
+ $newBranches = array();
+ foreach($branches as $branch)
+ {
+ $branch->name = $branch->Name;
+ if(empty($keyword) || stristr($branch->name, $keyword)) $newBranches[] = $branch;
+ }
+
+ return $newBranches;
+ }
+
+ /**
+ * Api delete branch.
+ *
+ * @param int $gogsID
+ * @param string $project
+ * @param string $branch
+ * @access public
+ * @return void
+ */
+ public function apiDeleteBranch($gogsID, $project, $branch)
+ {
+ $url = sprintf($this->getApiRoot($gogsID), "/repos/$project/branches/$branch");
+ return json_decode(commonModel::http($url, null, array(CURLOPT_CUSTOMREQUEST => 'DELETE')));
+ }
+}
diff --git a/module/gogs/view/binduser.html.php b/module/gogs/view/binduser.html.php
new file mode 100644
index 0000000000..b06735dd9b
--- /dev/null
+++ b/module/gogs/view/binduser.html.php
@@ -0,0 +1,85 @@
+
+ * @package gogs
+ * @version $Id$
+ * @link http://www.zentao.net
+ */
+?>
+
+
+
+
gogs->bindUser;?>
+
+
+
+
diff --git a/module/gogs/view/browse.html.php b/module/gogs/view/browse.html.php
new file mode 100644
index 0000000000..d925058381
--- /dev/null
+++ b/module/gogs/view/browse.html.php
@@ -0,0 +1,73 @@
+
+ * @package gogs
+ * @version $Id$
+ * @link http://www.zentao.net
+ */
+?>
+
+
+
+ createLink('gogs', 'browse'), "{$lang->gogs->server}", '', "class='btn btn-link btn-active-text'");?>
+
+
+ " . $lang->gogs->create, '', "class='btn btn-primary'");?>
+
+
+
+
+
+ noData;?>
+
+ createLink('gogs', 'create'), " " . $lang->gogs->create, '', "class='btn btn-info'");?>
+
+
+
+
+
+
+
diff --git a/module/gogs/view/create.html.php b/module/gogs/view/create.html.php
new file mode 100644
index 0000000000..df7c376c66
--- /dev/null
+++ b/module/gogs/view/create.html.php
@@ -0,0 +1,45 @@
+
+ * @package gogs
+ * @version $Id$
+ * @link http://www.zentao.net
+ */
+?>
+
+
+
+
+
+
gogs->lblCreate;?>
+
+
+
+
+
+
diff --git a/module/gogs/view/edit.html.php b/module/gogs/view/edit.html.php
new file mode 100644
index 0000000000..aafb2fe439
--- /dev/null
+++ b/module/gogs/view/edit.html.php
@@ -0,0 +1,45 @@
+
+ * @package gogs
+ * @version $Id$
+ * @link http://www.zentao.net
+ */
+?>
+
+
+
diff --git a/module/gogs/view/view.html.php b/module/gogs/view/view.html.php
new file mode 100644
index 0000000000..66cb881716
--- /dev/null
+++ b/module/gogs/view/view.html.php
@@ -0,0 +1,37 @@
+
+ * @package GitLab
+ * @version $Id: view.html.php 4728 2013-05-03 06:14:34Z david18810279601@gmail.com $
+ * @link http://www.zentao.net
+ * */
+?>
+
+
+
+
+
+
+
+
gogs->url;?>
+
url, $gogs->url, '_target');?>
+
+
+
+
+
+
diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php
index 6c313d612c..351d6ac032 100644
--- a/module/group/lang/resource.php
+++ b/module/group/lang/resource.php
@@ -70,7 +70,8 @@ $lang->moduleOrder[215] = 'message';
$lang->moduleOrder[220] = 'gitlab';
$lang->moduleOrder[225] = 'mr';
$lang->moduleOrder[230] = 'app';
-$lang->moduleOrder[235] = 'gitea';
+$lang->moduleOrder[235] = 'gogs';
+$lang->moduleOrder[240] = 'gitea';
$lang->resource = new stdclass();
@@ -1225,11 +1226,13 @@ $lang->ci->methodOrder[5] = 'commitResult';
$lang->ci->methodOrder[10] = 'checkCompileStatus';
$lang->resource->compile = new stdclass();
-$lang->resource->compile->browse = 'browse';
-$lang->resource->compile->logs = 'logs';
+$lang->resource->compile->browse = 'browse';
+$lang->resource->compile->logs = 'logs';
+$lang->resource->compile->syncCompile = 'syncCompile';
$lang->compile->methodOrder[5] = 'browse';
$lang->compile->methodOrder[10] = 'logs';
+$lang->compile->methodOrder[15] = 'syncCompile';
$lang->resource->jenkins = new stdclass();
$lang->resource->jenkins->browse = 'browseAction';
@@ -1436,6 +1439,22 @@ $lang->gitlab->methodOrder[145] = 'browseTag';
$lang->gitlab->methodOrder[150] = 'createTag';
$lang->gitlab->methodOrder[155] = 'deleteTag';
+/* Gogs. */
+$lang->resource->gogs = new stdclass();
+$lang->resource->gogs->browse = 'browse';
+$lang->resource->gogs->create = 'create';
+$lang->resource->gogs->edit = 'edit';
+$lang->resource->gogs->view = 'view';
+$lang->resource->gogs->delete = 'delete';
+$lang->resource->gogs->bindUser = 'bindUser';
+
+$lang->gogs->methodOrder[5] = 'browse';
+$lang->gogs->methodOrder[10] = 'create';
+$lang->gogs->methodOrder[15] = 'edit';
+$lang->gogs->methodOrder[20] = 'view';
+$lang->gogs->methodOrder[25] = 'delete';
+$lang->gogs->methodOrder[30] = 'bindUser';
+
/* Gitea. */
$lang->resource->gitea = new stdclass();
$lang->resource->gitea->browse = 'browse';
diff --git a/module/install/lang/de.php b/module/install/lang/de.php
index 5c7d739bf6..ac375fa988 100644
--- a/module/install/lang/de.php
+++ b/module/install/lang/de.php
@@ -162,7 +162,7 @@ $lang->install->account = 'Admin Konto';
$lang->install->password = 'Admin Passwort';
$lang->install->placeholder = new stdclass();
-$lang->install->placeholder->password = 'Combination of letters, numbers and special symbols, at least 6 characters';
+$lang->install->placeholder->password = 'The Password should be ≥ 6 characters, combination of uppercase, lowercase letters and numbers.';
$lang->install->errorEmpty['company'] = "{$lang->install->company} should not be blank.";
$lang->install->errorEmpty['account'] = "{$lang->install->account} should not be blank.";
diff --git a/module/install/lang/en.php b/module/install/lang/en.php
index cfba4afa3c..ae67f6612d 100644
--- a/module/install/lang/en.php
+++ b/module/install/lang/en.php
@@ -162,7 +162,7 @@ $lang->install->account = 'Admin Account';
$lang->install->password = 'Admin Password';
$lang->install->placeholder = new stdclass();
-$lang->install->placeholder->password = 'Combination of letters, numbers and special symbols, at least 6 characters';
+$lang->install->placeholder->password = 'The Password should be ≥ 6 characters, combination of uppercase, lowercase letters and numbers.';
$lang->install->errorEmpty['company'] = "{$lang->install->company} should not be blank.";
$lang->install->errorEmpty['account'] = "{$lang->install->account} should not be blank.";
diff --git a/module/install/lang/fr.php b/module/install/lang/fr.php
index c5d7bfad74..ffa59af709 100644
--- a/module/install/lang/fr.php
+++ b/module/install/lang/fr.php
@@ -162,7 +162,7 @@ $lang->install->account = 'Compte Admin';
$lang->install->password = 'Mot de Passe Admin';
$lang->install->placeholder = new stdclass();
-$lang->install->placeholder->password = 'Combination of letters, numbers and special symbols, at least 6 characters';
+$lang->install->placeholder->password = 'Le mot de passe doit ≥ 6 caractères, combinaison de lettres majuscules, minuscules et de chiffres.';
$lang->install->errorEmpty['company'] = "{$lang->install->company} should not be blank.";
$lang->install->errorEmpty['account'] = "{$lang->install->account} should not be blank.";
diff --git a/module/install/lang/zh-cn.php b/module/install/lang/zh-cn.php
index 0b4042c8b7..14dd84cb04 100644
--- a/module/install/lang/zh-cn.php
+++ b/module/install/lang/zh-cn.php
@@ -162,7 +162,7 @@ $lang->install->account = '管理员帐号';
$lang->install->password = '管理员密码';
$lang->install->placeholder = new stdclass();
-$lang->install->placeholder->password = '六位及以上,包含数字、字母和特殊字符';
+$lang->install->placeholder->password = '6位及以上,包含大小写字母,数字。';
$lang->install->errorEmpty['company'] = "{$lang->install->company}不能为空";
$lang->install->errorEmpty['account'] = "{$lang->install->account}不能为空";
diff --git a/module/install/model.php b/module/install/model.php
index 8d4b8d65c3..4d4d302c96 100644
--- a/module/install/model.php
+++ b/module/install/model.php
@@ -516,14 +516,13 @@ class installModel extends model
}
}
+ $this->loadModel('user');
+ $this->app->loadConfig('admin');
/* Check password. */
if(!validater::checkReg($this->post->password, '|(.){6,}|')) dao::$errors['password'][] = $this->lang->error->passwordrule;
- if(isset($this->config->safe->mode) and (strlen($this->post->password) < $this->config->safe->mode)) dao::$errors['password'][] = $this->lang->user->weakPassword;
- if(!empty($this->config->safe->changeWeak))
- {
- if(!isset($this->config->safe->weak)) $this->app->loadConfig('admin');
- if(strpos(",{$this->config->safe->weak},", ",{$this->post->password},") !== false) dao::$errors['password'][] = sprintf($this->lang->user->errorWeak, $this->config->safe->weak);
- }
+ if($this->user->computePasswordStrength($this->post->password) < 1) dao::$errors['password'][] = $this->lang->user->placeholder->passwordStrengthCheck[1];
+ if(!isset($this->config->safe->weak)) $this->app->loadConfig('admin');
+ if(strpos(",{$this->config->safe->weak},", ",{$this->post->password},") !== false) dao::$errors['password'] = sprintf($this->lang->user->errorWeak, $this->config->safe->weak);
if(dao::isError()) return false;
/* Insert a company. */
diff --git a/module/jenkins/config.php b/module/jenkins/config.php
index 874d71aea1..f86ffd1b7c 100644
--- a/module/jenkins/config.php
+++ b/module/jenkins/config.php
@@ -1,5 +1,5 @@
jenkins->create = new stdclass();
$config->jenkins->edit = new stdclass();
-$config->jenkins->create->requiredFields = 'name,url';
-$config->jenkins->edit->requiredFields = 'name,url';
+$config->jenkins->create->requiredFields = 'name,url,account';
+$config->jenkins->edit->requiredFields = 'name,url,account';
diff --git a/module/job/control.php b/module/job/control.php
index f6440f3af3..3a2b28a1e1 100644
--- a/module/job/control.php
+++ b/module/job/control.php
@@ -49,12 +49,24 @@ class job extends control
$pager = new pager($recTotal, $recPerPage, $pageID);
$this->app->loadLang('compile');
- $this->view->jobList = $this->job->getList($repoID, $orderBy, $pager);
+ $jobList = $this->job->getList($repoID, $orderBy, $pager);
+ $this->loadModel('gitlab');
+ foreach($jobList as $job)
+ {
+ $job->canExec = true;
+ if($job->engine == 'gitlab')
+ {
+ $pipeline = json_decode($job->pipeline);
+ $branch = $this->gitlab->apiGetSingleBranch($job->server, $pipeline->project, $pipeline->reference);
+ if($branch and isset($branch->can_push) and !$branch->can_push) $job->canExec = false;
+ }
+ }
$this->view->title = $this->lang->ci->job . $this->lang->colon . $this->lang->job->browse;
$this->view->position[] = $this->lang->ci->job;
$this->view->position[] = $this->lang->job->browse;
$this->view->repoID = $repoID;
+ $this->view->jobList = $jobList;
$this->view->orderBy = $orderBy;
$this->view->pager = $pager;
diff --git a/module/job/css/create.css b/module/job/css/create.css
index a70ae4bc4d..188dd0855c 100644
--- a/module/job/css/create.css
+++ b/module/job/css/create.css
@@ -5,6 +5,6 @@
#server_chosen .chosen-single {border-right: 0px;}
#pipelineBox {width: 385px;}
#svnDirBox .input-group {width: unset !important;}
-#paramDiv .input-group {padding: 3px;}
+#jenkinsServerTR .input-group-addon {border-left-width: 0 !important;}
.chosen-container .chosen-drop{z-index: 1100;} /* from c20b7e7a5 */
diff --git a/module/job/css/edit.css b/module/job/css/edit.css
index 2eaabdfeb4..57c8a09567 100644
--- a/module/job/css/edit.css
+++ b/module/job/css/edit.css
@@ -5,4 +5,4 @@
#server_chosen .chosen-single {border-right: 0px;}
#pipelineBox {width: 385px;}
#svnDirBox .input-group {width: unset !important;}
-#paramDiv .input-group {padding: 3px;}
+#jenkinsServerTR .input-group-addon {border-left-width: 0 !important;}
diff --git a/module/job/model.php b/module/job/model.php
index c3d53774e7..7bae1cf900 100644
--- a/module/job/model.php
+++ b/module/job/model.php
@@ -181,6 +181,15 @@ class jobModel extends model
{
$repo = $this->loadModel('repo')->getRepoByID($job->repo);
$project = zget($repo, 'project');
+ if(!empty($repo))
+ {
+ $pipeline = $this->loadModel('gitlab')->apiGetPipeline($repo->serviceHost, $repo->serviceProject, $this->post->reference);
+ if(!is_array($pipeline) or empty($pipeline))
+ {
+ dao::$errors['repo'] = $this->lang->job->engineTips->error;
+ return false;
+ }
+ }
$job->server = (int)zget($repo, 'serviceHost', 0);
$job->pipeline = json_encode(array('project' => $project, 'reference' => $this->post->reference));
@@ -298,6 +307,15 @@ class jobModel extends model
{
$repo = $this->loadModel('repo')->getRepoByID($job->gitlabRepo);
$project = zget($repo, 'project');
+ if(!empty($repo))
+ {
+ $pipeline = $this->loadModel('gitlab')->apiGetPipeline($repo->serviceHost, $repo->serviceProject, $this->post->reference);
+ if(!is_array($pipeline) or empty($pipeline))
+ {
+ dao::$errors['repo'] = $this->lang->job->engineTips->error;
+ return false;
+ }
+ }
$job->repo = $job->gitlabRepo;
$job->server = (int)zget($repo, 'serviceHost', 0);
diff --git a/module/job/view/browse.html.php b/module/job/view/browse.html.php
index 0a1e92e209..34daa1d6bc 100644
--- a/module/job/view/browse.html.php
+++ b/module/job/view/browse.html.php
@@ -74,7 +74,7 @@
repo}&jobID=$id", '', 'list', 'history');
common::printIcon('job', 'edit', "jobID=$id", '', 'list', 'edit');
- common::printIcon('job', 'exec', "jobID=$id", '', 'list', 'play');
+ common::printIcon('job', 'exec', "jobID=$id", '', 'list', 'play', '', $job->canExec ? '' : 'disabled');
if(common::hasPriv('job', 'delete')) echo html::a($this->createLink('job', 'delete', "jobID=$id"), '
', 'hiddenwin', "title='{$lang->job->delete}' class='btn'");
?>
diff --git a/module/job/view/create.html.php b/module/job/view/create.html.php
index fddeb4505b..5bdd794655 100644
--- a/module/job/view/create.html.php
+++ b/module/job/view/create.html.php
@@ -62,7 +62,7 @@
| job->triggerType; ?> |
- job->triggerTypeList, '', "class='form-control'");?> |
+ job->triggerTypeList, '', "class='form-control chosen'");?> |
|
@@ -122,9 +122,9 @@
| job->customParam;?> |
|